web-dev-qa-db-ja.com

GitがCygwinでVimを起動できない

仕事用のラップトップ(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")でコミットでき、ターミナルからvimvimdiffでVim/Vimdiffを起動できます。複数の場所でエディターをVimに設定しています:

$ echo $EDITOR
vim
$ git config --get core.editor
vim

(当初、Gitで明示的に設定していませんでしたが、環境変数でのみ設定しましたが、それでも同じ問題が発生しました。)

CygwinでWindowsGitを実行しているようです。 Cygwinを初めて使用したので、最初に質問したときはこれに気づいていませんでした。それがどのように問題を引き起こすかはわかりましたが、遊んだ後はまだ修正できていません。

誰かが以前にこの問題を見たことがありますか?それを修正する方法はありますか?

6
Kazark

@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を開始することができましたが、それでもいくつかの問題がありました。ファイルを表示することはできましたが、ツール自体が差分に失敗し、次のエラーが発生しました。

diff errors

ここで起こっていたのは、GitがVimのShellオプションをどういうわけかねじ込んでいたようです。私の.vimrc、私はこのコマンドを置きます:

set Shell=bash

そして今、すべてがスムーズに機能します。

10
Kazark