Janus vim, on a utilisé pour les messages de validation semble poser problème. Le meilleur exemple de ceci est quand vous faites un git pull
pour obtenir les modifications de quelqu'un d'autre. L'éditeur est affiché, je tape mon message de commit, j'entre:wqmais au lieu que la validation fonctionne, j'obtiens le message d'erreur suivant:
error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.
Je dois ensuite commettre déjà :(
Comment puis-je faire en sorte que joue bien avec vim?
Après quelques recherches sur Google, il s'avère que la solution consiste à exécuter les opérations suivantes:
git config --global core.editor $(which vim)
Nat Ritmeyer a donné la bonne solution . Je vais vous donner la cause.
Comme Steve Tooke a expliqué , cacher votre ~/.vimrc
ou dire explicitement à git
d'utiliser le chemin complet de vim
résout le problème. Cependant, il termine par "Je voudrais quand même aller à la racine du problème".
Essaye ça:
git commit
pour vous mettre dans un éditeur vim
.<CTRL> + Z
pour arrêter le processus et revenir au TTY.Faites un ps
et notez pour votre ATS (dont vous obtenez le numéro avec la commande tty
):.
$ tty
/dev/ttys005
$ ps
PID TTY TIME CMD
17547 ttys005 0:00.15 -bash
65126 ttys005 0:00.02 git commit
65127 ttys005 0:00.10 vi .git/COMMIT_EDITMSG
$ which vi
/usr/bin/vi
$ ll /usr/bin/vi
lrwxr-xr-x 1 root wheel 3 Oct 3 17:40 /usr/bin/vi -> vim
$ jobs
[1]+ Stopped git commit
Retournez à votre processus vim avec fg %1
(ou le numéro du travail jamais arrêté, votre git commit
est répertorié comme).
Ce que nous dit la sortie de Shell est ...
bash
appelé git
et git
appelé vi
vi
est /usr/bin/vi
vi
est un lien symbolique vers vim
<CTRL> + Z
a arrêté la commande git commit
qui était n ° 1 dans la pile de travaux.Donc, vi est la même commande que vim?!?! Oui, mais vim
remarque que son argv[0]
était vi
et s'exécute en mode compatible . Cela peut causer des problèmes en fonction de ce qui est dans votre .vimrc
.
Le meilleure solution consiste à dire à git d'utiliser vim, mais je vous suggère ne supposez pas que votre chemin vim est le même que tout le monde elses (peut-être que vous avez installé via brew install vim
)
git config --global core.editor $(which vim)
Cela pourrait être un plugin ou quelque chose dans votre fichier .vimrc. Le meilleur moyen de charger vim en mode sans échec pour modifier les messages de validation est d'utiliser:
git config --global core.editor '/usr/bin/vim -f -u NONE'
Je rencontrais le même problème chaque fois que je récupérais du dépôt distant et le fusionnais avec une autre branche.
En tapant ceci dans le terminal, ça a résolu le problème pour moi
git config --global core.editor $(which vim)
Si, pour une raison quelconque, git config --global core.editor /usr/bin/vim
ne fonctionne pas, essayez sans l'indicateur --global
. Je pourrais le faire fonctionner uniquement sans l'indicateur --global
.