diffoptオプションを設定して、diffsplitの結果を変える
vimエディタを使用して、2つのテキストファイルの差分を表示する方法を紹介します。 このテクニックは、主にファイルの比較をする場合に使用します。 (Windows, Mac)
概要
vimエディタの設定ファイルで「diffopt」オプションを指定すると、 2つのテキストファイルの差分を表示する「diffsplit」コマンドの挙動を、 自分の好みの表示方式にカスタマイズできます。
「diffopt」オプションの説明
diffの結果を表示するウィンドウの分割形式
:vertical diffsplit 差分を取りたいファイル
差分を取りたいファイルの名前が「theother.txt」なら、コマンド例は次の通りです。
:vertical diffsplit theother.txt
Note
「vertical」コマンドは「ウィンドウを横2つに分割しろ」という指定です。
このオプションを外した場合、ウィンドウは縦2つに分割された後、
各差分がそれらのウィンドウに表示されます。
" 差分を取りたいファイルが「theother.txt」の場合のコマンド例 :diffsplit theother.txt
VDSplitコマンドを使う
Kaoriya版パッチのあたっているvimエディタなら、
「vertical diffsplit」と同様の機能を持つコマンドとして、
「VDSplit」というコマンドが組み込まれています。
この「VDSplit」コマンドを使用すると、
より少ないキーストロークで2つのファイルの差分を表示できます。
:VDSplit 差分を取りたいファイル " 差分を取りたいファイルが「theother.txt」の場合のコマンド例 :VDSplit theother.txt
Note
「VDSplit」コマンドはKaoriya版パッチのあたっているvimエディタでのみ、 使用できるコマンドです。
指定のバッファとの差分のとり方
差分を取りたい2つ目のファイルがバッファに入っている時(既にエディタで読み込んでいる時)、
そのバッファは「# + バッファの番号」という書式で指定できるので、
次のような方法でも差分をとることができます。
この方法は大抵、ファイル名を指定した場合よりもキーストロークが少なくて済むので、
覚えておくと役に立ちます。
:VDSplit 差分を取りたいバッファ " 差分を取りたいバッファの番号が5の場合のコマンド例 :VDSplit #5
Note
バッファの番号を知るには「buffers」コマンドか、「ls」コマンドを実行してください。
vimエディタのコマンドの中で「# + バッファの番号」と記述すると、
その番号のバッファを指定したことになります。
:buffers
詳しくは、vimエディタのヘルプを見てもらうとして、今回は、diffoptで指定できる"icase"オプションと、"iwhite"オプションの話。
これらのオプションをdiffoptで指定すると、diffsplitの結果がちょっとだけ変えられるのです。
・"icase"オプションを指定すると、diffsplitを実行する時に、アルファベット大文字、小文字を区別しないdiffを実行するようになり、
・"iwhite"オプションを指定すると、diffsplitを実行する時に、半角スペースの数が、比較している行で違っていても、それを無視してdiffを実行するようになります。
diffoptを設定する場合は、↓このように指定します。 カンマで区切って複数のオプションを指定できます。 当然、この設定は、設定ファイル.vimrcファイルか_vimrcファイルに書いておきます。
:set diffopt=filler,icase,iwhite
既存の設定を上書きしないように、
:set diffopt
と入力して、現在の設定を確認した上で、(現在の設定に)追加するような形で指定すると良いでしょう。
なお、diffexprを設定している場合、(設定したdiffexprの中でこれらのオプションを使っていない限り)、"icase"、"iwhite"のオプションは使用されませんので、注意してください。
Recent Comments
ありがとうございます!
http://nanasi.jp/articles/howto/editing/visualcursor-endtoend.html · 7 years ago
知りませんでした。有難うございました。
http://nanasi.jp/articles/howto/file/open-with-format.html · 9 years ago
<c-f>1ページ分、下にスクロールする<c-b>1ページ分、上にスクロールする
どっちも逆です。
http://nanasi.jp/articles/howto/user-manual/user-manual-motion.html · 10 years ago
set 使用時に : で閉じるのを忘れて右往左往してました。
http://nanasi.jp/articles/howto/file/modeline.html · 10 years ago
やっぱり日本語の方が早いっす。
http://nanasi.jp/articles/howto/help/help_ja.html · 11 years ago