erro: Ocorreu um problema com o editor 'vi' ao usá-lo com o git

12

Eu tenho esse problema estranho ao usar vicomo editor para git commit -a.

O fluxo normal é: digito git commit -a, viaparece, insiro minha mensagem de confirmação e, em seguida, :wqpara salvar e sair de vi.

Isso funciona bem. No entanto, às vezes eu faço um erro de digitação e em vez de :wqtipo I :Wq(porque eu uso a mudança para :). Então, quando eu me corrijo e digito :wqnovamente, gitdá o seguinte erro:

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

Como posso consertar isso?

houbysoft
fonte
Qual versão gite vi? Não consigo reproduzir isso com o vim 7.3, git versão 1.7.11.1.
26412 Christopher
@Christopher: vi 7.3e git 1.7.9.6 (Apple Git-31.1), os default no Mountain Lion afaik
houbysoft

Respostas:

14

viexiste com um status diferente de zero, embora sem detalhes adicionais sobre sua configuração, é difícil dizer o porquê. Se você estiver usando muitos plug-ins vim, tente mover o .vimrcarquivo .vimrc.backe veja se é possível replicar. Existem algumas fontes que discutem esse problema, incluindo pelo menos uma com uma solução potencial:

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

Eu tentaria remover o seu .vimrcprimeiro, no entanto. Parece causar mais consternação.

Christopher
fonte
5
Obrigado, git config --global core.editor /usr/bin/vimconsertou.
houbysoft 27/07/2012
1
A solução do @ applOOb é melhor, já que não é um truque como este.
jefflunt
15

Como respondido aqui: /programming/22699614/git-commit-messages-lost-by-vi

A verdadeira solução é

git config --global core.editor vim -f

De acordo com a documentação do vim - -f option should be used when Vim is executed by a program that will wait for the edit session to finish

applOOb
fonte
3
Finalmente ... esta é a solução certa. Também corrige o problema de bater :We fazer com que o git rejeite sua mensagem de confirmação quando você a salvar posteriormente.
Ryanmt
Uma solução que é realmente uma solução e não uma solução alternativa esfarrapada! Eu realmente espero que as pessoas que leem a resposta aceita entendam a diferença entre a viminvocação normal e o hack que estão usando.
jefflunt
1

Você usa os plugins golang vim? Esta linha está causando o problema do valor de saída vi para mim: filetype plugin indent off

A remoção de todo o bloco do plugin golang .vimrccorrigiu o problema. A instalação do plugin golang usando o fugitivo pode ser tão fácil quanto:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(Acabei de documentar o problema nesta edição no github vim-golang )

Jan
fonte
0

Algo está errado com a configuração do Git, eu acho.

Portanto, a solução é redefinir a configuração do Git e funcionou para mim:

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

$(which vim)é mais flexível do que /usr/bin/vim(o executável vim pode não estar disponível para algumas pessoas)

ericn
fonte