Git でバージョン管理された Vim 内の複数のファイルを比較するために、vimdiff+ dirdiff.vimを使用しようとしています。
Mercurial の場合、mercurial extdiff拡張で可能です。
Vim を Git diff と統合するために Web で見つけた唯一の方法は、この投稿で説明されているように、単一のファイルで vimdiff を使用することです。
vimdiff + dirdiff + gitの使い方を知っている人はいますか?
Git でバージョン管理された Vim 内の複数のファイルを比較するために、vimdiff+ dirdiff.vimを使用しようとしています。
Mercurial の場合、mercurial extdiff拡張で可能です。
Vim を Git diff と統合するために Web で見つけた唯一の方法は、この投稿で説明されているように、単一のファイルで vimdiff を使用することです。
vimdiff + dirdiff + gitの使い方を知っている人はいますか?
git-diffall私が必要としているものです、どうもありがとう。git difftool に関するこのページと、コマンド ラインからの vim+dirdiff の実行に関するこのページの助けを借りて、次のように書きました。$HOME/.gitconfig
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE
[difftool]
prompt = false
git-diffall myを入れた後 PATH、たとえば作業ディレクトリとブランチdevを次のように比較できます。
git diffall dev
これ--copy-backは、Vim から永続的に作業ディレクトリを変更する場合にも必要です。
git diffall --copy-back dev
バージョン1.7.11以降、「git difftool」は「--dir-diff」オプションを学習し、物事を簡素化し、git-diffall不要になりました。
.gitconfig内容:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
たとえば、ブランチを使用した作業ディレクトリの差分は次のようにdev実行されます。
git difftool -d dev
Tim Pope's fugitiveは、vim の典型的な git プラグインです。dirdiff の機能はないかもしれませんが、git status出力を美しく統合し、変更されたファイル間を簡単にナビゲートするためのキー マッピングを備えています。出力にリストされているファイルgit statusは、マッピングと簡単に比較でき、変更に含まDれる正確な変更をカスタマイズできます。
( git 1.7.11、2012 年 6 月) 以降、git はディレクトリを比較できるようになったため (つまり、 を開く前に、比較するすべてのファイルを表示します) 、 Vim モジュール fugitiveのコミットを監視することは興味深いでしょう。difftool
git difftool「ディレクトリを比較するには?」を参照してください。
したがって、その機能を に追加することfugitive.vimは、ファイルからファイルへの差分アプローチからの進化になります。
ただし、Zyxはコメントでそのアプローチの限界を指摘しています。
これを機能させるために必要なのは次のとおりです。
git diff --name-statusとgit cat-file、それ以上はありません (一部の
vimscriptコードを除く)。
そして、 とは異なり、これは vcsおよび vcsをサポートするgit difftoolすべての VCS で機能します。diffcat-file
Zyx は、そのファイルごとのアプローチの例として、彼のプロジェクトaurumについて言及しています。
私のオーラムにはdirdiffのような機能があり(違いのあるファイルを表示
AuVimDiff fullするタブの束を開きますvimdiff)、いかなる種類のdifftoolサポートも使用しませんでした。
(スクリプトを参照aurum / autoload / aurum / vimdiff.vim)
Zyx は次のように付け加えます。
この機能を逃亡者に追加したい人にとっては、良いガイドにはなりません:
実際の呼び出しは、アクセスされた asgit diff --name-statusによって呼び出される関数の git ドライバー内に隠されています(mercurial は を使用していないため、これはかなり論理的だと思います)。 したがって、ここでは 3 つのレベルの抽象化をトラバースする必要があります (リポジトリ インターフェイス、シェル コマンド ラッパー、そして実際の git 呼び出しのみ)。 最初から全部書いた方が早いs:git.statusrepo.functions.statushg status -r rev1:rev2hg diff --name-status
Git はディレクトリの差分を直接サポートしていませんが、サード パーティの拡張機能を使用して実行できます。
チェックアウトしてくださいgit diffall(開示:私はこのスクリプトを書きました)。このスクリプトは、によって設定されたツールと連携してgit config diff.tool <TOOL>、真のディレクトリ差分を実行します。
また、次の関連する質問も参照してください。