🗃️

GitのeditorがVim in Neovimになるのを防ぐ

2022/10/29に公開

さいきんVimとNeovimを行ったり来たりしながら作業しています。
Vim/NeovimのterminalでGit commitを行う際に、コミットメッセージを書くためにエディタを開いたところでエラーになる症状が発生しました。
どうやら、Vim in Neovim(またはNeovim in Vim)の状態になっていたことが原因のようです。

https://twitter.com/kawarimidoll/status/1585822773678845952

Vim/Neovimのterminalに入ると、自動的に環境変数$VIM$VIMRUNTIME(そしてVimでのみ$VIM_TERMINAL)が設定されます。
これが起動したいプログラムと不一致(Vim起動時に$VIM=nvimである、またはその逆)になっていると正常に起動できないようです。

これに対処するために、環境変数を見てVim/Neovimを起動するスクリプトを作りました。

vix
#!/bin/bash

if [[ -n "$VIM_TERMINAL" ]]; then
 # in vim
 vim "$*"
else
  nvim "$*"
fi

上記のスクリプトに実行権限をつけてPATHの通った場所に保存し、gitconfigのeditorに名前を登録すればOKです。

git/config
[core]
  editor = vix

これでVim内ではVimが、Neovim内ではNeovimが呼び出されます。

Discussion