Usando git commit -a con vim

111

Soy nuevo en git, así que decidí aprender git usando los tutoriales de github. El tercer capítulo decía:

"Para este primer ejemplo, modificaremos el archivo README para agregarnos a nosotros mismos como autor en el proyecto. Así que simplemente editamos el archivo. Ahora queremos confirmar ese cambio, así que ejecutamos el git commit -acomando".

Cuando uso el git commit -acomando, la consola abre un vim y escribí mi mensaje, pero no sé cómo cerrar este editor de vim desde la consola. ¿Cómo guardo el mensaje y cierro vim?

Vaquero
fuente
9
Esta hoja de trucos gráfica es muy útil: viemu.com/vi-vim-cheat-sheet.gif . Lo uso como fondo de pantalla de mi escritorio.
yasuser
@Jean - ¿En qué plataforma estás y estás usando consola o GUI Vim? ¿No aparece un texto introductorio (número de versión, autor, etc.) en la pantalla de inicio?
Torre

Respuestas:

193
  1. En vim, guarda un archivo con :wEntermientras está en el modo normal (llega al modo normal presionando Esc).
  2. Cierra su archivo con :qmientras está en el modo normal.

Puede combinar ambas acciones y hacerlo Esc:wqEnterpara guardar la confirmación y salir de vim.

Como alternativa a lo anterior, también puede presionar ZZmientras está en el modo normal, lo que guardará el archivo y saldrá de vim. Esto también es más fácil para algunas personas, ya que es la misma tecla presionada dos veces.

a B C D
fuente
24
También puede hacer git commit -a -m "su mensaje aquí" que no mostrará VIM.
David Basarab
8
@David: Por supuesto. Muchas de estas preguntas aquí se deben a que las personas olvidan la -mopción y luego se lanzan dentro de una ventana vim y no saben cómo salir.
abcd
3
@yoda: También puede acceder al modo normal usando ctrl + c. Además, es Shift + (z + z) para guardar y salir (dos Z mayúsculas).
Rocket Hazmat
1
@Rocket: Tienes razón. No me di cuenta de que había entrado en zlugar de Z.
abcd
5
@EEva: Sí, pero prefiero no enseñárselo a un novato, como si se olvidaran del :, luego comienzan a eliminar personajes, y luego eso lleva al pánico 2.
abcd
58

En lugar de intentar aprender vim, use un editor diferente más fácil (como nano, por ejemplo). Por mucho que me guste vim, no creo que usarlo en este caso sea la solución. Se necesita dedicación y tiempo para dominarlo.

git config core.editor "nano"
Uku Loskit
fuente
52
Eso es gracioso; nano estaba predeterminado en Ubuntu y no pude averiguar cómo guardar, así que usé su comando para cambiar a vim.
hyperslug
11

Consulte este hilo para obtener una explicación: VIM para Windows: ¿Qué debo escribir para guardar y salir de un archivo?

Como escribí allí: para aprender Vimming, puede usar una de las tarjetas de referencia rápida:

También tenga en cuenta ¿Cómo puedo configurar un editor para trabajar con Git en Windows? si no se siente cómodo usando Vim pero desea usar otro editor para sus mensajes de confirmación.

Si su mensaje de confirmación no es demasiado largo, también puede escribir

git commit -a -m "your message here"
eckes
fuente
También puede seguir esta respuesta para salir de vim stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/…
David Basarab
Si bien esto es cierto, no es recomendable .
Jorge Leitao
7

La mejor pregunta es: ¿Cómo interrumpo la confirmación cuando salgo de vim?

Hay 2 formas:

  1. :cq o :cquit
  2. Elimine todas las líneas del mensaje de confirmación, incluidos los comentarios, y luego :wq

De cualquier manera le dará a git un código de error, por lo que no continuará con la confirmación. Esto es particularmente útil con git commit --amend.

cdunn2001
fuente
Por cierto, recuerdo esto de la jerga de la radioafición. Al comienzo de Contact , después de la muerte de su padre, la joven Ellie (Jena Malone) le dice al Universo, "CQ CQ CQ". Eso significa, "Llamando a todas las estaciones".
cdunn2001
1

Para salir de golpear: q te dejará salir.

Si desea salir sin guardar, puede presionar: q!

Una búsqueda en Google de "vim cheatsheet" puede proporcionarle una referencia que debe imprimir con una colección de atajos rápidos.

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

Chrisjlee
fuente