1. ホーム
  2. ギット

[解決済み】vimdiff ですべての `git diffs` を表示する。

2022-04-19 04:58:25

質問

設定方法 git diff を使用して vimdiff にラップします。 Vimdiffを使ったGit Diff "をガイドに、変更のあるファイルが多くない限り期待通りに動作しています。

複数のファイルに変更があるときに git diff というメッセージが表示され、最初のファイルを開き、vimdiff の最初のインスタンスを終了した後、次のメッセージが表示されます。

external diff died, stopping at filename

これは、私が慣れている動作とは全く異なるものです。 過去にSVNで同様の設定をしていたことがありますが、複数のファイルに対して差分を取る場合、最初のファイルを確認した後、書き込みと終了のために :wq で、差分のある次のファイルが開かれる。

Gitではこのようなことはありません。試しに :n[ext] しかし、この方法では左側のウィンドウに元のファイルが表示されないため、変更されたバージョンとの差分を取ることができません。

解決方法は?

git config --global diff.tool vimdiff
git config --global difftool.prompt false

タイピング git difftool は期待通りの動作をします。

ナビゲーションコマンドです。

  • :qa を実行すると、何も保存せずにチェンジセット内の次のファイルに移動します。

エイリアシング(例)

git config --global alias.d difftool

...と入力すると git d でvimdiffを起動します。

高度な使用例。

  • デフォルトでは、git は -R オプションを付けて vimdiff を呼び出します。git config --global difftool.vimdiff.cmd 'vimdiff "$LOCAL" "$REMOTE"' でオーバーライドすることができます。これにより、vimdiffが書き込み可能なモードで開かれ、差分を取りながら編集できるようになります。
  • :wq で、vim は変更点を保存したチェンジセット内の次のファイルへ巡回します。