Neovimで複数の単語をハイライト(vim-quickhl.vim) @Windows10
※この記事は、dein.vimによりプラグイン管理を行うことを前提で説明します。
まだdein.vimを入れてない人はいつぞやの記事などを参考に入れて下さいまし。
確認環境
Spec / Version | |
---|---|
PC | mouse LB-J770X-SH2 |
OS | Windows10 Home (ver 1607 build 14393.693) |
neovim | v0.2.0-621-ge901868f |
neovim-qt | v0.2.4 |
複数の単語を同時にハイライト vim-quickhl.vim
人間生きていれば、ある変数にスポットライトを当てたい場面が幾度となくあります。
例えば、関数内での変数の生態を知りたいときです。
そんなときは*
キーで検索すればOKです。
隠れてる変数だってばっちりハイライトされるので見落とすこともないでしょう。
あれ、でももし同時に探したい変数が2種類以上になったらどうしましょ。
はい、そんなときは vim-quickhl.vim の出番です。
複数の単語を同時に異なる色でハイライトすることができます。
カーソル位置に追従した単語のハイライトや、ctagsに登録された変数/関数だってハイライトできちゃいます。
使用イメージ
vim-quickhl.vimでハイライトしたときの画面がこちらです。
わーなんてカラフル。ワンダフル。日本語だって大丈夫。
dein(*.tomlファイル)の設定サンプル
参考までに私の設定サンプルです。
[[plugins]] repo = 't9md/vim-quickhl' hook_add = ''' "let g:quickhl_cword_enable_at_startup = 1 " カーソル位置ハイライトを最初から有効 " 指定単語のハイライト有効/無効 nmap <Leader>* <Plug>(quickhl-manual-toggle) " 現在のカーソル位置/または選択中の単語ハイライトを有効/無効 vmap <Leader>; <Plug>(quickhl-manual-this) nmap <Leader>; <Plug>(quickhl-manual-this) " カーソルに追従した単語ハイライトを有効/無効 nmap <Leader>+ <Plug>(quickhl-cword-toggle) " タグファイルの単語ハイライトを有効/無効 nmap <Leader>] <Plug>(quickhl-tag-toggle) " `quickhl-manual-*`で登録した単語のハイライトを解除する vmap <Leader><Esc> <Plug>(quickhl-manual-reset) nmap <Leader><Esc> <Plug>(quickhl-manual-reset) " 指定の単語のハイライト色 "highlight Search gui=underline guibg=None guifg=None let g:quickhl_manual_colors = [ \ "gui=none ctermfg=7 ctermbg=153 guibg=#4169e1 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=1 guibg=#70a040 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=2 guibg=#ffa500 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=3 guibg=#cd4040 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=4 guibg=#20b2aa guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=5 guibg=#6a5acd guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=6 guibg=#f08080 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=45 guibg=#1060a0 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=16 guibg=#2e8b57 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=21 guibg=#a9a9a9 guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=22 guibg=#e0c67c guifg=#ffffff", \ "gui=none ctermfg=7 ctermbg=56 guibg=#dd0add guifg=#ffffff", \ "gui=none ctermfg=16 ctermbg=50 guibg=#00ffff guifg=#222222", \ ] " カーソルに追従するハイライト色 let g:quickhl_cword_hl_command = "QuickhlCword gui=underline,bold cterm=underline term=underline" " タグファイル登録単語のハイライト色 let g:quickhl_tag_hl_command = "QuickhlTag gui=underline cterm=underline term=underline" " 常にハイライトさせる単語 let g:quickhl_manual_enable_at_startup = 1 let g:quickhl_manual_keywords = [ \ "pachicoma", \ {"pattern": '\s\+$', "regexp": 1 }, \ ] '''
ハイライトON/OFF
各ハイライトのON/OFFには関数が提供されています。
よく使いそうなものを以下に抜粋しました。
関数 | 意味 |
---|---|
<Plug>(quickhl-manual-toggle) | 指定単語のハイライトON/OFF |
<Plug>(quickhl-manual-this) | カーソル位置/または選択中の単語ハイライトON/OFF |
<Plug>(quickhl-cword-toggle) | カーソルに追従した単語ハイライトON/OFF |
<Plug>(quickhl-tag-toggle) | タグファイル登録単語ハイライトON/OFF |
<Plug>(quickhl-manual-reset) | quickhl-manual-* で指定した単語ハイライトOFF |
お好きなキーに割り当てて下さいまし。
ハイライト色の設定
ハイライト色も下記変数で好きに設定することができます。
変数 | ハイライト色の指定対象 | サンプルの設定内容 |
---|---|---|
g:quickhl_manual_colors | 指定の単語 | 細字かつ色を下画像のように変更 |
g:quickhl_cword_hl_command | カーソル追従 | 太字+下線、色はそのまま |
g:quickhl_tag_hl_command | ctags登録単語 | 下線、色はそのまま |
サンプル設定でのハイライト結果が下です(ctags登録単語は除く)。
我ながら色彩センスが無いことで。。。皆さんも好きに設定して下さいな。
デフォルト色でも良い人は、上記変数の設定をまるごと消しちゃって下さい。
デフォルトでは、同時にハイライトできる単語数は13個までです。
もし増やしたい場合は、増やしたい分だけg:quickhl_manual_colors
に色の設定を追加しましょう。
登録単語のハイライト
予め辞書変数に登録した単語を常にハイライトすることもできちゃいます。あまり活躍の場は思い浮かびませんが。
サンプルでは下のように任意の単語pachicoma
と、正規表現により行末の空白をハイライトするようにしてます。
因みにですが、プラグインを使わなくてもvimの設定でタブ文字や行末空白の表示はできちゃいます。
"不可視文字の表示 set list listchars=tab:>_,trail:_ highlight SpecialKey term=underline guifg=gray
下画像の34,35行目の>___
がタブ文字、38行目末尾の_
が末尾スペースです。
詳しくはh: listcharsを読んでねと。
備考
本プラグインが提供するのはハイライト機能だけです。
通常の検索ように、次のハイライト箇所にジャンプする機能はありませんのでご注意を。
まとめ
今回はNeovimで複数の単語をハイライトさせる素晴らしい能力を手に入れました。
これであなたも変数ハンターになれること間違いなしです。
おしまい。