error: Hubo un problema con el editor 'vi' al usarlo con git

12

Tengo este extraño problema con el uso vicomo editor de git commit -a.

El flujo normal es: escribo git commit -a, viaparece, ingreso mi mensaje de confirmación y luego :wqguardar y salir vi.

Esto funciona bien Sin embargo, a veces hago un error tipográfico y en lugar de :wqescribir :Wq(porque uso el cambio para :). Luego, cuando me corrijo y escribo de :wqnuevo, gitaparece el siguiente error:

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

¿Cómo puedo arreglar esto?

houbysoft
fuente
¿Qué versión de gity vi? No puedo reprobar esto con vim 7.3, git versión 1.7.11.1.
Christopher
@Christopher: vi 7.3y git 1.7.9.6 (Apple Git-31.1), los predeterminados en Mountain Lion afaik
houbysoft

Respuestas:

14

viexiste con un estado distinto de cero, aunque sin detalles adicionales sobre su configuración, es difícil saber por qué. Si está utilizando muchos complementos vim, puede intentar mover su .vimrcarchivo .vimrc.backy ver si puede replicarlo. Existen algunas fuentes que analizan este problema, incluida al menos una con una posible solución:

git config --global core.editor /usr/bin/vim

.vimrcSin embargo, intentaría eliminar el primero. Parece causar más consternación.

Christopher
fuente
55
Gracias, lo git config --global core.editor /usr/bin/vimarreglé.
houbysoft
1
La solución de @ applOOb es mejor, ya que no es un truco como este.
jefflunt
15

Como se respondió aquí: /programming/22699614/git-commit-messages-lost-by-vi

La verdadera solución es

git config --global core.editor vim -f

De acuerdo con la documentación de vim - -f option should be used when Vim is executed by a program that will wait for the edit session to finish

APLICACIÓN
fuente
3
Finalmente ... esta es la solución correcta. También soluciona el problema de golpear :Wy hacer que git rechace su mensaje de confirmación cuando lo guarda posteriormente.
Ryanmt
¡Una solución que en realidad es una solución y no una solución poco convincente! Realmente espero que las personas que leen la respuesta aceptada entiendan la diferencia entre su viminvocación normal y el truco que están utilizando.
jefflunt
1

¿Utilizas los complementos de golang vim? Esta línea me está causando el problema del valor de salida vi: filetype plugin indent off

La eliminación de todo el bloque de complementos de golang .vimrcsolucionó el problema. Instalar el complemento golang usando fugitivo puede ser tan fácil como:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(Acabo de documentar el problema en este número en el vim-golang github )

ene
fuente
0

Algo está mal con la configuración de Git, supongo.

Entonces, la solución es restablecer la configuración de Git y funcionó para mí:

git config --global core.editor $(which vim)

$(which vim)es más flexible que /usr/bin/vim(el ejecutable vim puede no estar disponible para algunas personas)

ericn
fuente