パーソナルツール

blockdiff.vim : 選択した2つの範囲だけを対象にした差分比較

作者: 小見 拓 最終変更 2012年01月08日 11時49分
— カテゴリ:

blockdiff.vimスクリプトは、選択した2ヶ所のブロックのテキストの比較機能を提供するスクリプトです。 比較対象とする2ヶ所のブロックは、同じファイル内にあっても、別のファイルにあっても構いません。 同じファイル内の似たようなコードを比較するのにも役立ちますし、 選択した範囲のテキストだけで比較を行いたい場合にも役に立つでしょう。 (Windows)

概要

BlockDiff : Difference between two blocks (functions etc...)
http://www.vim.org/scripts/script.php?script_id=2048

blockdiff.vimスクリプトは、選択した2ヶ所のブロックのテキストの比較機能を提供するスクリプトです。
比較対象とする2ヶ所のブロックは、同じファイル内にあっても、別のファイルにあっても構いません。
同じファイル内の似たようなコードを比較するのにも役立ちますし、
選択した範囲のテキストだけで比較を行いたい場合にも役に立つでしょう。

2ヶ所のテキストから、差分diffを実行

インストール方法

スクリプト をダウンロードしたら、
そのスクリプトをpluginディレクトリにコピーしてください。

ファイル URL
blockdiff.vim http://www.vim.org/scripts/script.php?script_id=2048

Note

このスクリプトを使用するには「diff」コマンドが必要です。
Windows環境の場合は「diff」コマンドを入手する必要があります。
参考:Windows環境のvimエディタでdiff機能を使うには

使用方法

操作手順

このスクリプトを使用するには、次の手順で操作を行います。
比較対象のブロックを、メニューか、コマンドで指定します。

  • 比較対象とするブロックを1ヶ所選択する。
  • もう1ヶ所のブロックを選択する。
  • 2ヶ所目のブロックを選択すると、選択エリアの比較が実行される。

メニューでの操作

メニューで操作する場合は、 比較対象のブロックをビジュアルモードで選択後、
メニューから、1つ目のブロックか、2つ目のブロックかを指定します。
2つ目のブロックを指定した時に、差分比較が実行されます。

「Tools」→「BlockDiff」→「This is Block 1」
「Tools」→「BlockDiff」→「This is Block 2, start diff」
メニューで指定

↓(2つめの場所を選択すると、比較処理が実行される。)

比較結果

コマンドでの操作

コマンドで操作する場合も、メニューで操作する場合とさほど操作は変わりません。
比較対象の範囲をビジュアルモードか、コマンドで選択後、
(メニューで選択する代わりに)次のコマンドで、 1つ目のブロックか、2つ目のブロックかを指定します。
2つ目のブロックを指定した時に、差分比較が実行されます。

" 1つ目のブロックを選択
:'<,'>:BlockDiff1
" 2つ目のブロックを選択
:'<,'>:BlockDiff2
コマンドで指定

↓(2つめの場所を指定すると、比較の結果が表示される)

比較実行結果

Note

コマンドでの操作の場合は、ビジュアルモードで範囲を選択する以外に、
コマンドで比較範囲を指定することもできます。

" 1つ目のブロックを選択(コマンド例)
:3,15:BlockDiff1
" 2つ目のブロックを選択(コマンド例)
:49,88:BlockDiff2

注意事項など

このスクリプトは、どのファイルの、どの場所を、比較対象のブロックとして指定したかは記録しません。
また、比較の実行結果のテキストに対し編集を加えても、選択元のテキストを与えることもできません。
ですから、ブロックの比較を実行した後、比較元のテキストを編集するつもりであるなら、

  • その場所を記憶しておくか、
  • vimエディタのマークの機能を使用して位置を記録して、

元の場所に移動すると良いでしょう。

Note

vimエディタのマーク機能は、簡単に説明すると、
ノーマルモードで「mA」と実行しておくと、
その記録した位置に、ノーマルモードの「'A」コマンドで移動できるという機能です。
Aの代わりに、a~z、A~Zの他のアルファベットも使用できます。

ドキュメントアクション
コメント
blog comments powered by Disqus