Vimでファイル同士の差分比較やマージを行う方法を勉強したのでメモしておく。
どうして専用ソフトではなく,Vimで行うのかということについてだが,Vimは環境に依存しないので,この方法さえ覚えてしまえば,どんな環境でも差分比較・マージが可能というメリットがあるためだ。
Vimで2つのファイルの差分を比較・表示する
Vimでは,diffsplitコマンドを使うことで,現在Vimで開いているファイルと,指定したファイルとの差分の部分をハイライトして,比較・表示することができる。この状態を「diffモード」と呼ぶ。
コマンドの書式は以下のようになる。
:vertical diffsplit 差分を取りたいファイル
例として,smokydog.txtというテキストファイルとの差分を取りたい場合は以下のようになる。
:vertical diffsplit smokydog.txt
コマンドの詳細について解説すると,vertical
で画面を2つに分割し,diffsplit
で差分の比較・表示を行っている。
2つのファイルの差分をマージする
Vimでは,「diffモード」の状態で,2つのファイルの差分のマージを行うこともできる。もう一方のファイルから差分を取り込むには,ハイライトにカーソルを合わせ,ノーマルモードでdo
を入力する。逆に,もう一方のファイルに差分を取り込ませるにはdp
を入力する。
do
は「diff obtain」,dp
は「diff put」と覚える。
ファイル間で違いがある場所へカーソルを移動する
Vimでは,「diffモード」の状態でファイル間で違いがある場所へ,瞬時にカーソルを移動させることができる。差分を下方向に検索してカーソルを移動するには,ノーマルモードで]c
を入力する。逆に,差分を上方向に検索してカーソルを移動するには,[c
を入力する。
参考
2つのテキストファイルの差分をマージする 名無しのvim使い
2つのテキストファイルの差分を取る 名無しのvim使い