git difftool で各ファイルを開く前に vim (vimdiff) エラーが発生する

git difftool で各ファイルを開く前に vim (vimdiff) エラーが発生する
"~/Desktop/project/file.txt" [readonly] 81L, 2480C
Error detected while processing command line:
E344: Can't find directory "src/" in cdpath
E472: Command failed
Press ENTER or type command to continue

... while processing command line:^ このエラーは、すべてのファイルを開く前にポップアップ表示されます。と表示されてから空白になるため、どこからエラーが発生しているのかわかりません...

これを呼び出すために使用しているコマンドはgit difftool

また、これを呼び出したときのディレクトリは であり~/Desktop/project/src、 が取得されるのはここからであると想定していますCan't find directory "src/"

答え1

git difftool の使用時にも同様の問題が発生しました。.vimrcまたは プラグインを確認してくださいlcd %:p:h。 を呼び出すときに以下を追加することで問題を解決しましたlcd %:p:h

if !&diff
  lcd %:p:h
endif

答え2

vimdiffGit はディレクトリから呼び出し~/Desktop/project、ファイルをsrc/...そのような相対パスとして渡しているように見えますが、Vim は'cdpath'設定を参照し、そこにあるものにはディレクトリがないsrc/ため、エラーが発生します (コマンドラインから)。

Git の正しい方法は./src/...、 または絶対パスを使用することですが、これを変更するのはおそらく困難です。代わりに、CDPATH環境変数を介して Vim のデフォルト値に影響を与えるか、 を入力して:set cdpath=これら~/.vimrcの検索を実質的に無効にすることができます。

関連情報