Ich versuche, visuelle Moduszuordnungen einzurichten, um die von Git generierte Rebase-Liste schnell bearbeiten zu können, wenn ich beispielsweise ein interaktives Rebase durchführe git rebase --interactive upstream/master
. Dabei wird Ihnen eine Textdatei angezeigt, die folgendermaßen aussieht:
pick 12345678 commit message 1
pick 23456789 commit message 2
pick 34567890 commit message 3
Ich möchte <c-v>
die Zeilen auswählen, die ich auf eine andere Rebase-Methode umstellen möchte, z. B. „Verwenden“, um im ersten Wort der Zeile von „zu“ <localleader>f
zu wechseln . Ich möchte dies etwas fehlertoleranter machen, sodass dies bei anderen Zeilen, wie Kommentaren und leeren Zeilen, nicht passiert.pick
fixup
Ich habe versucht, :substitute
mit einer Regexp-Gruppe nur gültige Wörter auszuwählen: (pick|reword|edit|squash|fixup|exec|drop)
. Folgendes habe ich derzeit in .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>
Leider stimmen die regulären Ausdrücke mit nichts überein. Ich habe versucht, \=
am Ende des Musters ein hinzuzufügen, um 0 oder 1 eines beliebigen Wortes in der Gruppe abzugleichen, und es fügt den Ersatz vor dem Wort hinzu, das es ersetzen soll.
Was mache ich falsch?
Antwort1
Es ist eine Fluchtsache. Verwenden Sie entweder immer \\|
anstelle von \|
oder versuchen Sie
autocmd FileType gitrebase vnoremap <buffer> <localleader>p :s/\v^(pick\|reword\|edit\|squash\|fixup\|exec\|drop)/pick/<cr>