Usando git commit -a com vim

111

Sou novo com git, então decidi aprender git usando os tutoriais do github. O terceiro capítulo disse:

"Para este primeiro exemplo, modificaremos o arquivo README para nos adicionarmos como um autor no projeto. Portanto, simplesmente editaremos o arquivo. Agora, queremos confirmar essa alteração, então executamos o git commit -acomando."

Quando eu uso o git commit -acomando, o console abre um vim e eu escrevi minha mensagem, mas não sei como fechar este editor vim do console. Como eu salvo a mensagem e fecho o vim?

Jean
fonte
9
Esta folha gráfica de dicas é muito útil: viemu.com/vi-vim-cheat-sheet.gif . Eu o uso como papel de parede da minha área de trabalho.
yasouser
@Jean - Em qual plataforma você está e está usando um console ou GUI Vim? Você não obtém um texto introdutório (número da versão, autor e assim por diante) na tela inicial?
Torre de

Respostas:

193
  1. No vim, você salva um arquivo :wEnterenquanto está no modo normal (você retorna ao modo normal pressionando Esc).
  2. Você fecha o arquivo com :qno modo normal.

Você pode combinar essas ações e fazer Esc:wqEnterpara salvar o commit e sair do vim.

Como alternativa ao acima, você também pode pressionar ZZenquanto estiver no modo normal, o que salvará o arquivo e sairá do vim. Isso também é mais fácil para algumas pessoas, pois é a mesma tecla pressionada duas vezes.

abcd
fonte
24
Você também pode executar git commit -a -m "sua mensagem aqui" que não abrirá o VIM.
David Basarab
8
@David: Claro. Muitas dessas questões aqui são porque as pessoas esquecem a -mopção e são atiradas para dentro de uma janela do Vim e não sabem como sair.
abcd
3
@yoda: Você também pode voltar ao modo normal usando ctrl + c. Além disso, é Shift + (z + z) para salvar e sair (dois Zs maiúsculos).
Rocket Hazmat
1
@Rocket: Você está correto. Não percebi que havia entrado em zvez de Z.
abcd
5
@EEva: Sim, mas prefiro não ensinar isso a um novato, como se eles se esquecessem do :, então eles começam a deletar personagens, e isso leva ao pânico 2.
abcd
58

Em vez de tentar aprender o vim, use um editor diferente e mais fácil (como o nano, por exemplo). Por mais que eu goste do vim, não acho que usá-lo nesse caso seja a solução. É preciso dedicação e tempo para dominá-lo.

git config core.editor "nano"
Uku Loskit
fonte
52
Isso é engraçado; nano era o padrão no Ubuntu e não consegui descobrir como salvar, então usei seu comando para mudar para o vim.
hiperslug de
11

Veja este tópico para uma explicação: VIM para Windows - O que eu digito para salvar e sair de um arquivo?

Como escrevi lá: para aprender Vimming, você pode usar um dos cartões de referência rápida:

Observe também como posso configurar um editor para trabalhar com Git no Windows? se você não está confortável em usar o Vim, mas deseja usar outro editor para suas mensagens de commit.

Se a sua mensagem de confirmação não for muito longa, você também pode digitar

git commit -a -m "your message here"
eckes
fonte
Você também pode seguir esta resposta para sair de vim stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/…
David Basarab
Embora isso seja verdade, não é aconselhável .
Jorge Leitao
7

A melhor pergunta é: Como interrompo o commit ao encerrar o vim?

Existem 2 maneiras:

  1. :cq ou :cquit
  2. Exclua todas as linhas da mensagem de confirmação, incluindo comentários, e então :wq

Qualquer uma das formas fornecerá um código de erro ao git, portanto, ele não continuará com o commit. Isso é particularmente útil com git commit --amend.

cdunn2001
fonte
A propósito, eu me lembro disso da linguagem do radioamadorismo. No início do Contato , depois que seu pai morre, a jovem Ellie (Jena Malone) diz ao Universo, "CQ CQ CQ". Isso significa "Ligar para todas as estações".
cdunn2001
1

Para sair de bater: q vai deixar você desistir.

Se você quiser sair sem salvar você pode clicar em: q!

Uma pesquisa no Google sobre "vim cheatsheet" pode fornecer uma referência que você deve imprimir com uma coleção de atalhos rápidos.

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

chrisjlee
fonte