Usare git commit -a con vim


111

Sono nuovo con git, quindi ho deciso di imparare a usare git usando i tutorial di github. Il terzo capitolo diceva:

"Per questo primo esempio modificheremo il file README per aggiungere noi stessi come autori al progetto. Quindi modifichiamo semplicemente il file. Ora vogliamo eseguire il commit della modifica, quindi eseguiamo il git commit -acomando."

Quando uso il git commit -acomando, la console apre un vim e ho scritto il mio messaggio, ma non so come chiudere questo editor di vim dalla console. Come si salva il messaggio e si chiude vim?


9
Questo cheat sheet grafico è molto utile: viemu.com/vi-vim-cheat-sheet.gif . Lo uso come sfondo del desktop.
yasouser

@Jean - Su quale piattaforma sei e stai usando la console o la GUI Vim? Non viene visualizzato un testo introduttivo (numero di versione, autore e così via) nella schermata iniziale?
Rook

Risposte:


193
  1. In vim, si salva un file con :wEntermentre si è in modalità normale (si arriva alla modalità normale premendo Esc).
  2. Chiudi il file con :qmentre sei in modalità normale.

È possibile combinare entrambe queste azioni e fare Esc:wqEnterper salvare il commit e uscire da vim.

In alternativa a quanto sopra, puoi anche premere ZZmentre sei in modalità normale, che salverà il file e uscirà da vim. Questo è anche più facile per alcune persone poiché è lo stesso tasto premuto due volte.


24
Puoi anche fare git commit -a -m "il tuo messaggio qui" che non farà apparire VIM.
David Basarab

8
@ David: certo. Molte di queste domande qui sono perché le persone dimenticano l' -mopzione e poi vengono lanciate in una finestra di vim e non sanno come uscirne.
abcd

3
@yoda: puoi anche accedere alla modalità normale usando ctrl + c. Inoltre, è Shift + (z + z) per salvare ed uscire (due Z maiuscole).
Rocket Hazmat

1
@ Rocket: hai ragione. Non mi rendevo conto di essere entrato zinvece di Z.
abcd

5
@EEva: Sì, ma preferirei non insegnarlo a un principiante, come se dimenticassero il :, quindi iniziano a eliminare i caratteri, e poi questo porta al panico 2.
abcd

58

Invece di provare a imparare vim, usa un diverso editor più semplice (come nano, per esempio). Per quanto mi piaccia vim, non credo che usarlo in questo caso sia la soluzione. Ci vuole dedizione e tempo per padroneggiarlo.

git config core.editor "nano"

52
È divertente; nano era predefinito su Ubuntu e non riuscivo a capire come salvare, quindi ho usato il tuo comando per passare a vim.
hyperslug

11

Vedere questo thread per una spiegazione: VIM per Windows: cosa si digita per salvare e uscire da un file?

Come ho scritto lì: per imparare il Vimming, potresti usare una delle schede di riferimento rapido:

Nota anche come posso impostare un editor per lavorare con Git su Windows? se non ti senti a tuo agio nell'usare Vim ma vuoi usare un altro editor per i tuoi messaggi di commit.

Se il tuo messaggio di commit non è troppo lungo, puoi anche digitare

git commit -a -m "your message here"

Puoi anche seguire questa risposta per uscire da vim stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/…
David Basarab

Anche se questo è vero, non è consigliabile .
Jorge Leitao,

7

La domanda migliore è: come interrompo il commit quando esco da vim?

Ci sono 2 modi:

  1. :cq o :cquit
  2. Elimina tutte le righe del messaggio di commit, inclusi i commenti, e poi :wq

In entrambi i casi fornirà a git un codice di errore, quindi non procederà con il commit. Ciò è particolarmente utile con git commit --amend.


A proposito, ricordo questo dal gergo della radioam. All'inizio di Contact , dopo la morte del padre, la giovane Ellie (Jena Malone) dice all'Universo, "CQ CQ CQ". Ciò significa "Chiamare tutte le stazioni".
cdunn2001


1

Per uscire dalla pressione: q ti permetterà di uscire.

Se vuoi uscire senza salvare puoi premere: q!

Una ricerca su Google su "vim cheatsheet" può fornirti un riferimento che dovresti stampare con una raccolta di scorciatoie veloci.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.