カテゴリー
Apple

git commit でエラー、を解消しようとあれやこれや試しましたが、結局 git config –global core.editor vim しました

問題

Mac で git commit するとエラーとなり、コミット完了できません。

以下、git commit 時の出力です。

$ git commit
hint: Waiting for your editor to close the file... Error detected while processing function dein#begin[1]..dein#util#_begin[6]..dein#util#_error[1]..<SNR>5_msg2list:
line    1:
E121: Undefined variable: v:t_list
E15: Invalid expression: type(a:expr) ==# v:t_list ? a:expr : split(a:expr, '\n')
Error detected while processing function dein#begin[1]..dein#util#_begin[6]..dein#util#_error:
line    1:
E714: List required
Error detected while processing /Users/oki2a24/.vimrc:
line   74:
E185: Cannot find color scheme 'solarized'
Press ENTER or type command to continue
error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.
$

エラーの内容は次のような感じです。

  • error: There was a problem with the editor ‘vi’.
    エディタとして vi を立ち上げようとしたが、うまく行かなかったよ。。。
  • hint: Waiting for your editor to close the file… Error detected while processing function dein#begin[1]..dein#util#_begin[6]..dein#util#_error[1]..5_msg2list:
    dein#begin とか、解釈できなかったよ。。。
  • E185: Cannot find color scheme ‘solarized’
    カラースキームの solarized が見つからなかったよ。。。

普段、エディタとして vim を使っていますけれども、vi と競合しているようですね。。。

原因

git commit 時、vi (vim ではない) を立ち上げようとする。vi は実質 vim なのですが、普段使っている vim とは違うバージョンです。

この vi は普段使っている vim の起動時に読み込む .vimrc を読み込むときに解釈できずエラーとなります。

これが原因で、コミットが失敗していました。

調べてみますと、確かに vim も vi も存在しています。

$ which vim
/usr/local/bin/vim
$ which vi
/usr/bin/vi
$

解決するにあたっての悩み

解決するには、.gitconfig にエディタとして vi ではなく vim を指定すれば良いです。そして、このファイルは今まで管理してこなかったので、dotfiles リポジトリに追加すれば良いです。

ですけれども、まてよ、、、と立ち止まりました。

.vimrc は、Mac と Linux 用で共通して 1 つを作成しています。.gitconfig もそれでよいでしょうか?エディタのフルパスは、Mac や Linux 各ディストリビューションで異なることは十分に考えられるため、複数のファイルや判定をしなければならないでしょうか?そんなことは避けたいです。。。

次の 2 つの解決方法が考えられました。

解決策実施1. Mac の .bashrc に、vi は普段使っている vim へのエイリアスへ変更する。 -> 失敗><

次のようにしてみましたが、ダメでした。何も変わりませんでした。

cat << EOF >> ~/.bashrc

# vi は Homebrew の vim
alias vi='/usr/local/bin/vim'
EOF
source ~/.bashrc

参考

解決策実施2. git のエディタ指定を vim にする。そのとき、フルパスではなく、ただ vim と指定できればなお良い。 -> 成功!

次でできました!

$ git config --global core.editor vim
$ git config --global --get core.editor
vim
$

参考

躊躇しましたけれども、vim を指定して、.gitconfig も今後は管理しようかと思います。

おわりに

ふと気づきましたけれども、Mac の .bashrc も管理したほうが良いのでしょうかね。。。現在は Git のオプションとして Tab 補完などが入っています。なお、SDKMAN は自動で入りますので無視して良いですね♪

$ cat ~/.bashrc 
# ターミナルでタブ補完を有効
source /usr/local/etc/bash_completion.d/git-prompt.sh
source /usr/local/etc/bash_completion.d/git-completion.bash
# ターミナルにブランチ名を表示
GIT_PS1_SHOWDIRTYSTATE=true
export PS1='\h\[\033[00m\]:\W\[\033[31m\]$(__git_ps1 [%s])\[\033[00m\]\$ '

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/oki2a24/.sdkman"
[[ -s "/Users/oki2a24/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/oki2a24/.sdkman/bin/sdkman-init.sh"

以上です。

コメントを残す