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

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

El flujo normal es: git commit -a , vi aparece, ingreso mi post de confirmación, y luego :wq para save y salir de vi .

Esto funciona bien Sin embargo, a veces hago un error tipográfico y en vez de :wq :Wq (porque uso el desplazamiento para :wq . Luego, cuando me corrijo y :wq nuevamente, git da 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?

vi existe con un estado distinto de cero, aunque sin detalles adicionales sobre su configuration, es difícil decir por qué. Si está utilizando una gran cantidad de complementos para vim , puede intentar mover su file .vimrc.back a .vimrc.back y ver si puede replicar. Hay algunas fonts que discuten este problema, incluyendo al less uno con una posible solución:

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

Sin embargo, trataría de eliminar tu .vimrc primero. Parece causar más consternación.

Como se responde aquí: https://stackoverflow.com/questions/22699614/git-commit-messages-lost-by-vi

La verdadera solución es

 git config --global core.editor vim -f 

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

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

La eliminación de todo el bloque del complemento .vimrc en .vimrc solucionó el problema. Instalar el complemento de 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 tema en el vim-golang github )

Algo está mal con la configuration de Git, supongo.

Entonces la solución es restablecer la configuration 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)