vim-jp » Vimのユーザーと開発者を結ぶコミュニティサイト

新しい diffopt オプションの動作とその注意点について

Posted on 2018-12-12


patch 8.1.0363 にて diffopt オプションに internal という値が追加され、デフォルト値となりました。これまでは diffopt=filter という値がデフォルト値になっており差分表示を行う際には外部コマンドの diff が使われていました。今回入った diffopt=internal により Vim の内部に実装された処理により diff の表示が行われます。diff コマンドがインストールされていない OS の場合はとても便利になりました。

これまでも Vim の diff 表示は便利に使われてきたのですが、中には diff モードに入った事を契機にキーをマップしたり便利な設定をされていたかもしれません。その際これまでは外部コマンドによるフィルタ処理が行われていたので FilterWritePreFilterWritePost というイベントが発火しておりそれを利用されていたと思います。今回入った internal は外部コマンドを使わなくなりますので FilterWritePreFilterWritePost は発火しません。別途 8.1.0397 で用意された DiffUpdated イベントを使って下さい。

autocmd DiffUpdated * call s:my_diff_settings()
function! s:my_diff_settings() abort
  if &diff
    setlocal nocursorline
    nnoremap <buffer> u     u:diffupdate<CR>
    nnoremap <buffer> <C-r> <C-r>:diffupdate<CR>
  endif
endfunction

さて 2018 年もあと少しになりました。今年も皆さんからの issue 登録 により多くのバグが修正されました。vim-jp では引き続き皆さんからのバグ報告を「日本語で」お待ちしております。

来年も皆さんにとって良い Vim 年になりますように。


もどる