Vim でハイライトする operator をつくった

久々に Vim プラグインをつくった。

[インストール]

NeoBundle 'osyo-manga/vim-operator-highlighter'

[使い方]

<Plug>(operator-highlighter)マッピングします。

nmap <Leader>h <Plug>(operator-highlighter)
" 1つのみハイライトしたい場合はこっちを使う
" nmap <Leader>h <Plug>(operator-highlighter-once)

" ハイライトを消す
map <Leader>hh <Plug>(operator-highlighter-clear)

ハイライトグループ等の設定は g:operator#highlighter#config に行ないます。

let g:operator#highlighter#config = { "group" : "Error" }

また、timer_start() が使用できる環境であれば、以下のように設定して自動的に消すことも出来ます。

" 1000ms 後に消える
let g:operator#highlighter#config = { "clear_time" : 1000 }

[operator-sequence と組み合わせる]

operator-highlighter は単体で使用すればあまり使わなさそうな operator ですが、これは thinca/vim-operator-sequence と組み合わせることで真価を発揮します。 例えば、以下のように設定することで ヤンクしたtextobjを一瞬ハイライトさせる というような事が可能です。

" Use thinca/vim-operator-sequence
" yank and highlight
let g:operator#highlighter#config = { "clear_time" : 3000 }
noremap <Plug>(yank) y
noremap <expr> y operator#sequence#map("\<Plug>(operator-highlighter-once)", "\<Plug>(yank)")

operator_highlighter2

こんな感じで『一瞬ハイライトさせたい』みたいな用途に利用することが出来ます。

[注意]

clear_time を設定してる場合、ハイライトが消えるときにハイライトしたウィンドウが表示されてなければ一瞬ちらつく事があるので注意してください。