仕事用のラップトップ(Windows 7)のPowershell環境でGitをVimと連携させています。 git vimdiff
エイリアスをコミットまたは使用すると、Vimがポップアップします。
Cygwin(本質的にはUnixの人)で同じセットアップを試みましたが、git commit
またはgit vimdiff
と入力すると、Vimがポップアップしません。しかし、どうやら、GitはVimを待っています。なぜなら、アクションは私まで完了しないからです。 Ctrl-C (その後、回復するのに1分ほどかかります)。インラインコミットメッセージ(git commit -m "I would rather type this in Vim"
)でコミットでき、ターミナルからvim
とvimdiff
でVim/Vimdiffを起動できます。複数の場所でエディターをVimに設定しています:
$ echo $EDITOR
vim
$ git config --get core.editor
vim
(当初、Gitで明示的に設定していませんでしたが、環境変数でのみ設定しましたが、それでも同じ問題が発生しました。)
CygwinでWindowsGitを実行しているようです。 Cygwinを初めて使用したので、最初に質問したときはこれに気づいていませんでした。それがどのように問題を引き起こすかはわかりましたが、遊んだ後はまだ修正できていません。
誰かが以前にこの問題を見たことがありますか?それを修正する方法はありますか?
@skarfaceのおかげで、コミットに関してこの問題を解決しました。まず、質問の編集で述べたように、CygwinでCygwin Gitを実行しているのではなく、実際のWindowsGitを実行していることがわかりました。したがって、統合の問題は理にかなっています。vim
またはvimdiff
が見つかりません。
私がしなければなりませんでした:
git config --global core.editor C:/cygwin/bin/vim.exe
上記がうまくいった理由はわかりません。
$ which vim
/usr/bin/vim
だが:
$ ls C:/cygwin/usr/bin
ls: cannot access C:/cygwin/usr/bin: No such file or directory
だから、なぜそれがうまくいったのか正確にはわかりませんが、うまくいきました。
私は今、diffingに関してもそれを解決しました。そうしなければならなかった:
$ git config --global diff.tool vimdiff
$ git config --global difftool.vimdiff.cmd 'C:/cygwin/bin/vim.exe -d "$LOCAL" "$REMOTE"'
これにより、GitでVimdiffを開始することができましたが、それでもいくつかの問題がありました。ファイルを表示することはできましたが、ツール自体が差分に失敗し、次のエラーが発生しました。
ここで起こっていたのは、GitがVimのShell
オプションをどういうわけかねじ込んでいたようです。私の.vimrc
、私はこのコマンドを置きます:
set Shell=bash
そして今、すべてがスムーズに機能します。