web-dev-qa-db-ja.com

差分ファイルでvimdiffを使用する

Vimdiffを使用して、diffファイルに記述されている違いを表示するにはどうすればよいですか?

43
user14437

/usr/bin/vimdiffコマンドを使用する代わりに、これを試してください:

$ vimファイル
:vertical diffpatch path/to/diff

(略して:vert diffpa)。
これは、元のファイルとその後にパッチが適用されたファイルでvimdiffを呼び出すのと同じですが、vimは一時ファイルでpatchを呼び出します。

編集する

vimのdiff-modeを自動的に入力する場合は、次のようにします。

$ vimファイル+ 'vert diffpa path/to/diff'

ここで、+commandvimに「コマンド」の実行を要求します。 (+123は123行目にジャンプし、+/abcは "abc"の最初の一致にジャンプします。すべてドキュメント化されています。)

ケンのクエリについて:現在編集しているファイル以外のファイルに適用されるハンクがdiffファイルに含まれていても、心配ありません。 vimはその下にあるpatch実行可能ファイルを呼び出し、これらの不可解な欠落ファイルの場所を要求します。patchにこれらのハンクをスキップするように指示できます。

55
ephemient

他の方向から来る。最後の保存以降にファイルに加えられた変更をvimdiffまたはUnified diff形式で表示するVimプラグインを作成しました。

ここで入手: diffchanges.vim

3
Jeremy Cantrell

元のファイルのコピーを作成し、差分を適用してから

vimdiff original_file patched_file

また、svn diff出力を処理するために作成された vim.orgスクリプト も確認できます。バージョン管理システムから差分を生成している場合は、 vcscommand.vim:CVS/SVN/SVK/git統合プラグイン を確認してください。

2
Ken

これにvimdiffを使用する理由について詳しく教えてください。

たとえば、 (統一された)diffファイルの文字ごとの違いを視覚化しますか? にしますか?もしそうなら、誰かが 同じことについての私の質問提案 で答え、基本的にdiffでemacsを起動してALT-nハンクを循環させ、途中で単語ごとまたは文字ごとの変更を適切に強調表示します(vimdiffと同様)。これはうまく機能しますが、これを行うためだけにemacsを起動するのは面倒です。私はそれを行うのに十分なemacsを知っているだけで、パッチを汚すことなく終了します。 :)

とにかく、emacsの答えは私にいくつかのアイデアを与えました。 Vimがdiffファイルの強調表示を改善するように調整できると思います。おそらくediffのようなものです。しばらく前に調べたところ、vimユーザーリストの誰かが incorporate google-diff-match-patch に対して優れた提案をしてくれました。 Pythonインターフェースは、例えば、Python Vim ftpluginから使用できます。

「答え」を使用して返信するのが得策ではない場合に申し訳ありません。「コメントを追加」のフォーマットは、私が言いたいことに対して制限が多すぎます。

後世のために、 ここに別の同様の質問への参照があります (すでにここにもリンクしています)。

1
Adam Monsen