web-dev-qa-db-ja.com

vimdiffで変更をコピーするための推奨される方法は何ですか?

ファイルを比較し、ソースコードリポジトリを更新するときは、vimdiffを使用します。 1つのファイルから別のファイルに加えられた変更をコピーするには、通常、次のようなキーシーケンスを使用します。

Shift + V (select line)
k or j; { or }; Up or down arrow keys (select more lines)
y  (copy selected lines)
Ctrl + w, left/right arrow (move to other pane)
p (paste lines)

キーボードショートカットのマスターであるVimには、これと同じタスクを簡単に実行できるはずです。ありますか?ソースコードの変更を手動で更新するには何を使用しますか?

123
Alex Leach

do(差分取得)とdp(差分取得)が必要です。このコンテキストで役立つその他の通常モードコマンドのリストを次に示します。

]c               - advance to the next block with differences
[c               - reverse search for the previous block with differences
do (diff obtain) - bring changes from the other file to the current file
dp (diff put)    - send changes from the current file to the other file
zo               - unfold/unhide text
zc               - refold/rehide text
zr               - unfold both files completely
zm               - fold both files completely

注:
dodpのどちらも、通常モードでブロック上またはブロックの下の1行だけで機能し、ビジュアルモードでは機能しない場合に機能します。ビジュアルモードでテキストの行を選択するときは、通常のコマンドを使用する必要があります

  • :'<,'>diffgetおよび
  • :'<,'>diffput

:h copy-diffsもご覧ください。

:diffupdateは、ファイルの変更を再スキャンします。

194
Marco