Vimdiff使用

5216 ワード

https://www.ibm.com/developerworks/cn/linux/l-vimdiff/
ソース・プログラム・ファイル(通常は純粋なテキスト・ファイル)の比較とマージ・ツールは、ソフトウェア開発において重要な構成要素です.現在、市場にはBeyondCompareなどの強力な専用比較と合併ツールがたくさんあります.多くのIDEまたはソフトウェア構成管理システム、例えばEclipse、Rational ClearCaseは、ファイルの比較とマージをサポートするために組み込まれた機能を提供しています.
Unix/Linuxプラットフォームでリモートで動作する場合、おそらく最も簡単で、diffなどのコマンドラインツールがあちこちに存在します.残念ながらdiffの機能は限られており、使い勝手もよくありません.コマンドラインの比較ツールとして、比較結果を一目瞭然にすることができる簡単なインタフェースを望んでいます.また、比較した複数の違いの間をすばやく位置決めし、ファイルのマージを容易に行えるようにしたい.......Vimが提供するdiffモードは、通常vimdiffと呼ばれ、これらのすべてのニーズを満たすことができ、より多くの強力なツールを提供することができます.最近の作業では、多くのファイルの比較とマージを行う必要があるため、Vimdiffの使用について簡単にまとめました.まずvimdiffの基本的な使用を見てみましょう.

起動方法


まず、システム内のdiffコマンドが使用可能であることを保証します.Vimのdiffモードはdiffコマンドに依存する.Vimdiffの基本的な使い方は、
# vimdiff  FILE_LEFT  FILE_RIGHT

または
# vim -d  FILE_LEFT  FILE_RIGHT

図1はvimdiffコマンドの実行結果の画面である.
上図からは明確な比較結果が見えます.画面は垂直に分割され、左右に比較された2つのファイルがそれぞれ表示されます.2つのファイルの連続する同じ行が折り畳まれ、使用者が2つのファイルの違いに集中できるようになった.あるファイルに存在する行の背景色のみが青に設定され、別のファイルの対応する位置が緑に表示されます.どちらのファイルにも存在しますが、違いを含む行はピンクの背景として表示され、違いを引き起こす文字は赤い背景で強調されます.この方法でvimのdiffモードを起動するほか、分割ウィンドウコマンドでdiffモードを起動することもできます.
# vim FILE_LEFT

次にvimのexモード(つまり「コロン」モード)で入力します.
:vertical diffsplit FILE_RIGHT

同じ効果が得られます.2つのウィンドウの位置を交換する場合、またはウィンドウの分割方法を変更する場合は、次のコマンドを使用します:1.Ctrl-w K(現在のウィンドウを一番上に移動)2.Ctrl-w H(現在のウィンドウを一番左に移動)3.Ctrl-w J(現在のウィンドウを一番下に移動)4.Ctrl-w L(現在のウィンドウを一番右に移動)のうち1と3の操作はウィンドウを水平分割方式に変更します.
トップに戻る

カーソル移動


次に、カーソルを行間で動かしてみると、左右の画面のスクロールが同期していることがわかります.これは、「scrollbind」オプションが設定された結果、vimが両側のファイルの位置合わせを保証するために尽力したためです.このプロパティを使用しない場合は、次のように設定できます.
:set noscrollbind

ショートカットキーを使用して、各相違点間をすばやく移動できます.次の相違点にジャンプします.
]c

反転ジャンプYes:
[c

コマンドの前に数字を付けると、1つまたは複数の相違点をスキップして、より遠くにジャンプすることができます.たとえば、最初の相違点にある行に「2」cと入力すると、次の相違点を越えて3番目の相違点にジャンプします.
トップに戻る

ファイルの結合


ファイル比較の最終的な目的の1つは、差異を解消するためにマージすることです.1つの相違点の現在のファイルの内容を別のファイルにコピーする場合は、コマンドを使用します.
dp (diff "put")

別のファイルの内容を現在の行にコピーする場合は、コマンドを使用します.
do (diff "get", dg, dg )

ローを手動で変更する場合は、通常のvim操作を使用します.2つのファイル間でジャンプする場合は、次のコマンド・シーケンスを使用します.
Ctrl-w, w

1つまたは2つのファイルを変更するとvimdiffは、比較結果をリアルタイムで反映するためにファイルを自動的に再比較しようとします.ただし、処理に失敗する場合もあります.この場合、比較結果を手動でリフレッシュする必要があります.
:diffupdate

修正を取り消すには、通常のvim編集と同様に、直接
<ESC>, u

ただし、変更を取り消す必要があるファイルウィンドウにカーソルを移動する必要があります.
トップに戻る

2つのファイルを同時に操作


段落の比較とマージの後、次のコマンドで2つのファイルを同時に操作できます.たとえば、同時に終了する場合:
:qa (quit all)

すべてのファイルを保存する場合は、次の手順に従います.
:wa (write all)

または、両方のマージコマンドで、すべてのファイルを保存して終了します.
:wqa (write, then quit all)

終了時にアクションの結果を保存しない場合は、次の手順に従います.
:qa! (force to quit all)

トップに戻る

コンテキストの展開と表示


ファイルの比較とマージでは、最終的に実行する操作をコンテキストと組み合わせて決定することがよくあります.Vimdiffのデフォルトは、参照のために上下各6行のテキストが表示されます.他の同じテキスト行は自動的に折り畳まれます.デフォルトのコンテキスト行数を変更する場合は、次のように設定できます.
:set diffopt=context:3

簡単な折りたたみコマンドを使用して、折りたたまれた同じテキスト行を展開できます.
zo (folding open, z , )

次に、次のコマンドを使用して折りたたむことができます.
zc (folding close)

次の図は、コンテキストを3行に設定し、同じテキストの一部を展開したvimdiff画面です.
http://blog.csdn.net/huaciom/article/details/6192639