Automatischer Wechsel in den Einfügemodus beim Bearbeiten von Git-Commit-Nachrichten

Lesezeit: 3 Minuten

Benutzer-Avatar
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:

$ mkdir -p ~/.vim/ftplugin/gitcommit
$ echo 'startinsert!' > !$/git-commit-insert.vim

  • Danke, ich werde das in Zukunft berücksichtigen, aber ich habe bereits ein paar Autobefehle und würde dies gerne auf ähnliche Weise tun 🙂

    – Jodelver

    13. März 2014 um 10:50 Uhr

1046290cookie-checkAutomatischer Wechsel in den Einfügemodus beim Bearbeiten von Git-Commit-Nachrichten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy