vimの便利なPlugin(その9)linediff.vim

   2017/09/19

2つのディレクトリのdiffをvimでとり、編集していくPluginを(その01)で紹介いたしましたが、開いているファイル内での二組の複数行のdiffをとることはできません。 linediff.vimは、ビジュアルモードで選択した二組の行でdiffがとれます。ファイル内でdiffがとれるとvimでの開発作業効率がかなり上がります。是非試してみて下さい。

Install

今回もdein.vimを前提とさせていただきます。 まだ、dein.vimを使っていない方は(その5)から。

.vimrcにいかの行を追加します。

call dein#add(‘AndrewRadev/linediff.vim’)

これで「:call dein#install()」をコマンドラインモードで実行すればインストールは終了。

使い方

まずは、.vimrcに設定をいれてみます。

” 1つ目に選択した行をbuffer上で開く(初期値はtabnew)
let g:linediff_first_buffer_command = ‘new’
” 2つ目に選択した行を垂直分割して開く(初期値はrightbelow vertical new)
let g:linediff_second_buffer_command = ‘vertical new’
” LinediffResetをqをタイプすることで実行(2行表示されてますが1行で)
autocmd User LinediffBufferReady nnoremap <buffer> q :LinediffReset<cr>
” コマンドショートカット
command! -range Ld  call linediff#Linediff(<line1>, <line2>)
command! -bang  Ldr call linediff#LinediffReset(<q-bang>)
“このコマンドショートカットは、linediff version 0.2.0で動作OK。 version 0.3.0にアップデートしたら、以下の様に修正が必要になります。
command! -range Ld  call linediff#Linediff(<line1>, <line2>, {})
command! -bang  Ldr call linediff#LinediffReset(<q-bang>, {})

設定の詳細は、「:help linediff」で確認して見て下さい。 ファイル内での差分を試してみた結果こちら。(※wordpressのソースファイルで試してみました。)

linediff_disp

ビジュアルモードで比較したい1つ目の行を選択し、コマンドモードで :'<, ‘>Linediff を実行します。同様に比較対象である2つ目の行を選択し同じコマンドを実行します。 するとウィンドウが上下に割れ、上部ウンドウに差分が表示されます。終了したい場合は、:LinediffReset を実行すれば上部ウィンドウはキャンセルされ元に戻ります。

LinediffやLinediffResetと毎回タイプするのは、面倒なので上記の.vimrcに書き入れた最後の2行の設定で、それぞれ’Ld’、’Ldr’とタイプすれば実行できるようにしました。 また’q’とタイプするとLinediffResetと同等になるように1行を加えてあります。

 

 

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら