Janus vimディストリビューションを更新した後、コミットメッセージにvimを使用すると問題が発生するようです。この最も良い例は、git pull
他の誰かの変更を取得します。 vimエディターが表示されます。コミットメッセージを入力して、入力します :wq しかし、コミットが機能する代わりに、次のエラーメッセージが表示されます。
error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.
次に、手動でコミットする必要があります:(
どうすればgitをvimでうまく再生できますか?
少しググると、答えは以下を実行することです:
git config --global core.editor $(which vim)
Nat Ritmeyerが 正しい解決策 を提供しました。原因をお伝えします。
Steve Tookeの説明 と同様に、~/.vimrc
を非表示にするか、git
への完全なパスを使用するようにvim
に明示的に指示すると、問題が解決します。しかし、彼は「問題の根本に行きたい」で終わります。
これを試して:
git commit
を起動して、vim
エディターを開きます。<CTRL> + Z
を押してプロセスを停止し、TTYに戻りますps
を実行し、TTY(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
fg %1
(またはgit commit
がリストされている停止したジョブ番号)でvimプロセスに戻ります。
シェルの出力からわかることは...
bash
と呼ばれるgit
およびgit
と呼ばれるvi
vi
の絶対パスは/usr/bin/vi
ですvi
コマンドは、vim
へのシンボリックリンクです。<CTRL> + Z
を呼び出すとgit commit
コマンドが停止し、ジョブスタックで1位になりました。したがって、viはvimと同じコマンドですか?!?!はい、しかしvim
は、そのargv[0]
がvi
であり、次の場所で実行されることに気づきます- 互換モード 。これにより、.vimrc
の内容によっては問題が発生する可能性があります。
最善の解決策はvimを使用するようにgitに指示することですが、私はあなたに仮定しないことをお勧めしますvimパスが他の全員と同じであること(多分brew install vim
からインストールしたことでしょう)
git config --global core.editor $(which vim)
これは、.vimrcファイル内のプラグインまたは何かである可能性があります。コミットメッセージを編集するためにセーフモードでvimをロードする最良の方法は、以下を使用することです。
git config --global core.editor '/usr/bin/vim -f -u NONE'
リモートリポジトリからフェッチして別のブランチとマージするたびに、同じ問題に直面しました。
端末でこれを入力すると修正されました
git config --global core.editor $(which vim)
何らかの理由でgit config --global core.editor /usr/bin/vim
が機能しない場合は、--global
フラグなしで試してください。 --global
フラグなしでしか機能しません。