git rebaseファイルで単語を置き換える方法

git rebaseファイルで単語を置き換える方法

インタラクティブなリベース(例:)を実行するgit rebase --interactive upstream/masterときに、Gitで生成されたリベースのリストをすばやく編集するためにビジュアルモードマップを設定しようとしています。この場合、次のテキストファイルが表示されます。

pick 12345678 commit message 1
pick 23456789 commit message 2
pick 34567890 commit message 3

私がしたいのは、<c-v>別のリベース方法に切り替えたい行を選択することです。たとえば、行の最初の単語を使用して<localleader>ffromに変更しますpickfixup私は、コメントや空白行などの他の行に対してこれを行わないように、ある程度フォールトトレランスを持たせたいと思います。

私がやろうとしているのは、:substitute正規表現グループを実行して有効な単語のみを選択することです(pick|reword|edit|squash|fixup|exec|drop)。これが私が現在持っているものです.vimrc

autocmd FileType gitrebase vnoremap <buffer> <localleader>p :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/pick/<cr>
autocmd FileType gitrebase vnoremap <buffer> <localleader>r :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/reword/<cr>
autocmd FileType gitrebase vnoremap <buffer> <localleader>e :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/edit/<cr>
autocmd FileType gitrebase vnoremap <buffer> <localleader>s :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/squash/<cr>
autocmd FileType gitrebase vnoremap <buffer> <localleader>f :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/fixup/<cr>
autocmd FileType gitrebase vnoremap <buffer> <localleader>x :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/exec/<cr>
autocmd FileType gitrebase vnoremap <buffer> <localleader>d :s/^\(pick\|reword\|edit\|squash\|fixup\|exec\|drop\)/drop/<cr>

残念ながら、正規表現はどんなものとも一致しません。\=グループ内のすべての単語に対して0または1に一致するようにパターンの末尾にaを追加しようとしましたが、置換したい単語の前に代替項目を追加します。

私は何が間違っていましたか?

ベストアンサー1

警察アウト日です。常に\\|代わりに使用または\|試してください。

autocmd FileType gitrebase vnoremap <buffer> <localleader>p :s/\v^(pick\|reword\|edit\|squash\|fixup\|exec\|drop)/pick/<cr>

おすすめ記事