Automatischer Wechsel in den Einfügemodus beim Bearbeiten von Git-Commit-Nachrichten
Lesezeit: 3 Minuten
Jodelver
Wenn ich eine mache git commitwenn Vim geöffnet wird, möchte ich sofort im Einfügemodus sein.
Mir ist aufgefallen, dass die filetype ist eingestellt auf gitcommit beim Bearbeiten, also dachte ich, ich könnte dies mit einem Autobefehl erreichen.
au BufRead gitcommit startinsert!
Das geht aber nicht, was mache ich falsch?
LÖSUNG
Ich entschied mich au FileType gitcommit execute "normal! O" | startinsert um eine neue Zeile über der aktuellen hinzuzufügen und dann den Einfügemodus aufzurufen, in dem Sie eine Nachricht eingeben können.
Ihre vorgeschlagene Lösung ist nicht so schön für Nachrichten, die bereits Text wie –amend oder merges enthalten. Wissen Sie, wie Sie das Verhalten für diese Situationen ändern können?
– Grzegorz Adam Hankiewicz
6. Juni 2014 um 10:25 Uhr
Nein, ich habe dasselbe gefunden und würde gerne einen besseren Weg kennen.
– Jodelver
6. Juni 2014 um 14:09 Uhr
Ein alternativer Ansatz:
export GIT_EDITOR='vim +startinsert'
oder hinzufügen ! am Ende, um am Ende der Nachricht zu beginnen (nützlich, wenn Git-Hooks für die Nachrichtenvervollständigung verwendet werden)
export GIT_EDITOR='vim +startinsert!'
Danke, ja, ich habe darüber nachgedacht, bevor ich die Frage gepostet habe, aber ich dachte, ich würde gerne etwas mehr automatisieren, aber ich habe das aus Gründen der Klarheit außer Frage gelassen. Sie können auch tun vim +start übrigens.
– Jodelver
13. März 2014 um 10:51 Uhr
Im :au Event pattern command, wird das Muster normalerweise mit dem Puffernamen abgeglichen. Anstatt von BufRead gitcommitDu könntest benutzen BufRead COMMIT_EDITMSG. Wenn Sie mit der Dateitypoption übereinstimmen möchten, verwenden Sie die FileType Veranstaltung.
Ich neige dazu, mehrzeilige Commit-Nachrichten zu schreiben, und ich habe einen Autobefehl (aus vimrc_example.vim), der das tut
exe "normal! g`\""
wann immer ich einen neuen Puffer eingebe, also wie wäre es damit
au FileType gitcommit 1 | startinsert
in die erste Zeile gehen, bevor Sie in den Einfügemodus wechseln? Jetzt, wo ich es getestet habe, denke ich, dass ich es behalten werde. 🙂
Vielen Dank. Gibt es eine Möglichkeit, Autobefehle zu debuggen? Ich tat :set ft? um den Dateityp des aktuellen Puffers herauszufinden, und ich habe andere Autobefehle, die wie z au BufReadPost quickfix setlocal nospell die dasselbe verwenden. Ich habe mich damit abgefunden au FileType gitcommit execute "normal! O" | startinsert oben eine neue Zeile hinzuzufügen und dann in den Einfügemodus zu wechseln. Vielen Dank 🙂
– Jodelver
13. März 2014 um 10:48 Uhr
Zuerst, :execute "normal! 0" fügt keine neue Zeile hinzu. Es bewegt nur den Cursor an den Anfang der Zeile. Mein :1 wechselt in die erste Zeile. Sie können verwenden :verbose au BufReadPost quickfix um zu sehen, welche Autocommands für dieses Ereignis und Muster definiert sind und welche Datei sie definiert. Ähnlich, :verbose set ft?.
– Benjifischer
13. März 2014 um 12:35 Uhr
Es würde reichen, wenn das eine Null wäre, aber das ist es nicht, es ist ein großes o (O) 😉 Danke für den Tipp :verbosedas werde ich mal prüfen.
– Jodelver
13. März 2014 um 12:47 Uhr
Dies ist wahrscheinlich etwas komplexer als es sein muss, aber Sie können dies mit einem individuellen Dateityp-Plugin tun:
Ihre vorgeschlagene Lösung ist nicht so schön für Nachrichten, die bereits Text wie –amend oder merges enthalten. Wissen Sie, wie Sie das Verhalten für diese Situationen ändern können?
– Grzegorz Adam Hankiewicz
6. Juni 2014 um 10:25 Uhr
Nein, ich habe dasselbe gefunden und würde gerne einen besseren Weg kennen.
– Jodelver
6. Juni 2014 um 14:09 Uhr