errore: si è verificato un problema con l'editor "vi" durante l'utilizzo con git


12

Ho questo strano problema con l'utilizzo vicome editor per git commit -a.

Il flusso normale è: scrivo git commit -a, viappare, inserisco il mio messaggio di commit e quindi :wqper salvare e uscire vi.

Funziona benissimo. Tuttavia, a volte faccio un refuso e invece di :wqdigitare :Wq(perché uso lo shift per :). Quindi, quando mi correggo e digito :wqnuovamente, gitviene visualizzato il seguente errore:

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

Come posso risolvere questo problema?


Quale versione di gite vi? Non posso riproporlo con vim 7.3, versione git 1.7.11.1.
Christopher,

@Christopher: vi 7.3e git 1.7.9.6 (Apple Git-31.1), quelli predefiniti su Mountain Lion
afaik

Risposte:


14

viesiste con uno stato diverso da zero, sebbene senza ulteriori dettagli sulla configurazione, è difficile capire perché. Se stai utilizzando molti plugin per vim, potresti provare a spostare il tuo .vimrcfile .vimrc.backe vedere se riesci a replicare. Esistono alcune fonti che discutono questo problema, incluso almeno uno con una potenziale soluzione:

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

Vorrei provare a rimuovere .vimrcprima il tuo , comunque. Sembra causare più costernazione.


5
Grazie, git config --global core.editor /usr/bin/vimrisolto.
houbysoft,

1
La soluzione di @appOOb è migliore, dal momento che non è un hack come questo.
jefflunt,

15

Come risposto qui: /programming/22699614/git-commit-messages-lost-by-vi

La vera soluzione è

git config --global core.editor vim -f

Secondo la documentazione di vim - -f option should be used when Vim is executed by a program that will wait for the edit session to finish


3
Finalmente ... questa è la soluzione giusta. Risolve anche il problema di colpire :We far rifiutare a git il tuo messaggio di commit quando successivamente lo salvi.
Ryanmt,

Una soluzione che in realtà è una soluzione e non una soluzione approssimativa! Spero davvero che le persone che leggono la risposta accettata comprendano la differenza tra la loro normale chiamata vime l'hack che stanno usando.
jefflunt,

1

Usi i plugin Golang VIM? Questa riga sta causando il problema del valore di uscita vi per me: filetype plugin indent off

La rimozione dell'intero blocco del plugin Golang ha .vimrcrisolto il problema. Installare il plugin Golang usando Fugitive può essere semplice come:ln -s $GOROOT/misc/vim ~/.vim/bundle/vim-golang

(Ho appena documentato il problema in questo numero sul vim-golang github )


0

Qualcosa non va nella configurazione di Git, immagino.

Quindi la soluzione è ripristinare Git config e ha funzionato per me:

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

$(which vim)è più flessibile di /usr/bin/vim(eseguibile vim potrebbe non essere lì per alcune persone)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.