Verwenden von git commit -a mit vim

111

Ich bin neu in Git, also habe ich beschlossen, Git mithilfe der Tutorials von Github zu lernen. Das dritte Kapitel sagte:

"In diesem ersten Beispiel ändern wir die README-Datei, um uns als Autor zum Projekt hinzuzufügen. Also bearbeiten wir die Datei einfach. Jetzt möchten wir diese Änderung übernehmen und den git commit -aBefehl ausführen ."

Wenn ich den git commit -aBefehl verwende, öffnet die Konsole ein VIM und ich habe meine Nachricht geschrieben, aber ich weiß nicht, wie ich diesen VIM-Editor über die Konsole schließen kann. Wie speichere ich die Nachricht und schließe vim?

Jean
quelle
9
Dieser grafische Spickzettel ist sehr nützlich: viemu.com/vi-vim-cheat-sheet.gif . Ich benutze es als Desktop-Hintergrund.
Yasouser
@ Jean - Auf welcher Plattform befinden Sie sich und verwenden Sie die Konsole oder GUI Vim? Erhalten Sie auf dem Startbildschirm keinen Einführungstext (Versionsnummer, Autor usw.)?
Turm

Antworten:

193
  1. In vim speichern Sie eine Datei mit :wEnterim normalen Modus (Sie gelangen durch Drücken in den normalen Modus Esc).
  2. Sie schließen Ihre Datei :qim normalen Modus mit.

Sie können beide Aktionen kombinieren und Esc:wqEnterdas Commit speichern und vim beenden.

Alternativ können Sie auch ZZim normalen Modus drücken , um die Datei zu speichern und vim zu beenden. Dies ist für manche Menschen auch einfacher, da dieselbe Taste zweimal gedrückt wird.

A B C D
quelle
24
Sie können auch git commit -a -m "Ihre Nachricht hier" ausführen, wodurch VIM nicht aufgerufen wird.
David Basarab
8
@ David: Natürlich. Viele dieser Fragen hier sind, weil die Leute die -mOption vergessen und dann in ein Vim-Fenster geworfen werden und nicht wissen, wie sie rauskommen sollen.
abcd
3
@yoda: Sie können auch mit Strg + c in den normalen Modus wechseln. Außerdem ist es Shift + (z + z) zum Speichern und Beenden (zwei Großbuchstaben Z).
Rocket Hazmat
1
@ Rocket: Du bist richtig. Ich wusste nicht, dass ich zstatt eingetreten war Z.
abcd
5
@EEva: Ja, aber ich würde das einem Neuling lieber nicht beibringen, als ob sie das vergessen :, dann fangen sie an, Zeichen zu löschen, und das führt dann zu Panik 2.
abcd
58

Verwenden Sie einen anderen einfacheren Editor (z. B. Nano), anstatt zu versuchen, vim zu lernen. So sehr ich vim auch mag, ich denke nicht, dass es in diesem Fall die Lösung ist, es zu verwenden. Es braucht Engagement und Zeit, um es zu meistern.

git config core.editor "nano"
Uku Loskit
quelle
52
Das ist lustig; nano war unter Ubuntu die Standardeinstellung und ich konnte nicht herausfinden, wie ich speichern soll. Deshalb habe ich Ihren Befehl verwendet, um zu vim zu wechseln.
Hyperslug
11

In diesem Thread finden Sie eine Erklärung: VIM für Windows - Was gebe ich ein, um eine Datei zu speichern und zu beenden?

Wie ich dort schrieb: Um Vimming zu lernen, können Sie eine der Kurzreferenzkarten verwenden:

Beachten Sie auch, wie ich einen Editor für die Arbeit mit Git unter Windows einrichten kann. Wenn Sie mit Vim nicht vertraut sind, aber einen anderen Editor für Ihre Commit-Nachrichten verwenden möchten.

Wenn Ihre Festschreibungsnachricht nicht zu lang ist, können Sie auch eingeben

git commit -a -m "your message here"
eckes
quelle
Sie können dieser Antwort auch folgen, um vim stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/… zu verlassen
David Basarab
Dies ist zwar wahr, aber nicht ratsam .
Jorge Leitao
7

Die bessere Frage ist: Wie unterbreche ich das Commit, wenn ich vim beende?

Es gibt zwei Möglichkeiten:

  1. :cq oder :cquit
  2. Löschen Sie alle Zeilen der Festschreibungsnachricht, einschließlich der Kommentare, und dann :wq

In beiden Fällen wird git ein Fehlercode zugewiesen, sodass das Festschreiben nicht fortgesetzt wird. Dies ist besonders nützlich bei git commit --amend.

cdunn2001
quelle
Übrigens erinnere ich mich daran aus dem Amateurfunk. Zu Beginn von Contact , nachdem ihr Vater gestorben ist, erzählt die junge Ellie (Jena Malone) dem Universum "CQ CQ CQ". Das bedeutet "Alle Stationen anrufen".
cdunn2001
1

So beenden Sie das Schlagen: Mit q können Sie aufhören.

Wenn Sie beenden möchten, ohne zu speichern, können Sie drücken: q!

Eine Google-Suche auf "vim cheatsheet" kann Ihnen eine Referenz liefern, die Sie mit einer Sammlung schneller Verknüpfungen ausdrucken sollten.

http://www.fprintf.net/vimCheatSheet.html

Chrisjlee
quelle