Utiliser vim pour git commettre des messages cassés après la mise à jour de janus

Après la mise à jour de la dissortingbution janus vim, l’utilisation de vim pour les messages de validation semble poser problème. Le meilleur exemple de cela est lorsque vous effectuez un git pull au sort pour obtenir les changements de quelqu’un d’autre. L’éditeur vim est affiché, je tape mon message de validation, j’entre : w q mais au lieu de valider, je reçois 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 valider manuellement 🙁

Comment puis-je jouer au jeu avec vim?

Après un peu de recherche sur Google, la réponse est la suivante:

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

Nat Ritmeyer a donné la bonne solution . Je vais vous donner la cause.

Comme l’ explique Steve Tooke , cacher votre ~/.vimrc ou dire explicitement à git d’utiliser le chemin complet pour vim résout le problème. Cependant, il termine par «J’aimerais toujours aller à la racine du problème» .

Essaye ça:

  1. Commencez un git commit pour vous mettre dans un éditeur vim .
  2. Appuyez sur + Z pour arrêter le processus et revenir au TTY
  3. Faites un ps et remarquez pour votre TTY (dont vous obtenez le numéro avec la commande tty ) il y a quelque chose comme …

     $ 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 
  4. Revenez à votre processus vim avec fg %1 (ou ce que le numéro de travail arrêté par git commit est répertorié).

Ce que cette sortie de shell nous dit est …

  1. J’utilisais ttys005
  2. Sur le TTY bash appelé git et git appelé vi
  3. Le chemin complet de vi est /usr/bin/vi
  4. La commande vi est un lien symbolique vers vim
  5. L’appel de + Z arrêté la commande git commit et elle était # 1 dans la stack de travaux.

Alors, 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 se trouve dans votre .vimrc .

La meilleure solution est de dire à git d’utiliser vim, mais je vous suggère de ne pas supposer que votre chemin vim est le même que tout le monde (peut-être avez-vous 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 sécurisé pour la modification des messages de validation consiste à utiliser:

 git config --global core.editor '/usr/bin/vim -f -u NONE' 

J’ai été confronté au même problème chaque fois que je récupérais de repo à distance et que je fusionnais avec une autre twig.

En tapant ce terminal, je l’ai corrigé

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 le drapeau --global . Je pourrais le faire fonctionner uniquement sans le drapeau --global .