vim-users.jp

Hack #226: 複数のキーワードを手軽にハイライトする

Posted at 2011/08/31
このエントリーをはてなブックマークに追加

問題

vim でファイルを編集している時やログファイルを閲覧している時に特定のテキストを目立たせたいと思ったことはありませんか?
私はあります。
例えば以下のような場合です。

  • tcpdump の ログファイルを vim で閲覧していて特定の MACアドレス、IPアドレスを目立たせたい。
  • ソースコードを編集していて、特定のキーワードの出現を(ハイライトさせて)意識しつつ編集を進めたい。
  • fugitive.vim:Gblame コマンド(git blame)で特定の author を目立たせたい。

もちろん、 :Unite line 、あるいは / で検索してハイライトして目立たせる事は可能ですが、
複数の単語をハイライトさせたい場合は、 / では対応できません。

対処

quickhl.vim を使用すれば、手っ取り早く色を付けることができます。

動画を用意しました。 Youtube: quickhl.vim

※ 同様の事を目的としたプラグインとして、MultipleSearch 等があります。

インストール

quickhl.vim は vim.org や、github から入手可能です。
version 7.2 以上の vim で動作します。

Vundle を使用している場合は下記のコマンドでインストールできます。

:BundleInstall quickhl.vim

設定

quickhl.vim はデフォルトのキーマップを提供しませんので、ユーザーが .vimrc に設定する必要があります。
筆者オススメのキーマップは以下です。

nmap <Space>m <Plug>(quickhl-toggle)
xmap <Space>m <Plug>(quickhl-toggle)
nmap <Space>M <Plug>(quickhl-reset)
xmap <Space>M <Plug>(quickhl-reset)
nmap <Space>j <Plug>(quickhl-match)

上記の設定をした後、ノーマルモードで <Space>m を押すと、カーソル下の単語がハイライトされます。
同じ単語の上で、もう一度、 <Space>m を押すと、ハイライトがクリアされます。
すべてのハイライトをクリアしたい場合は、 <Space>M (スペースの後、大文字M)でクリアできます。

またビジュアルモードでテキストを選択して、 <Space>m を押すと、選択したテキストがハイライトされます。
複数行のテキストブロックのハイライトには対応していません。
ハイライトの追加削除は :QuickhlAdd , :QuickhlDel でも可能ですが、ハイライトしたい欲望は突然やってくるので、キーマップを設定して備えておくのがいいでしょう。

特定の単語を常にハイライトしたい場合は、 g:quickhl_keywords にキーワードを設定します。
例えば .vimrc に以下の様に設定します。

let g:quickhl_keywords = [
    \ "ujihisa",
    \ "tyru",
    \ "Sixeight",
    \ "t9md",
    \ "thinca",
    \ "Shougo",
    \ ]

その他、一時的に特定のバッファでハイライトを無効(Lock)する、 :QuickhlLock コマンド等も用意されています。
詳しくは :help quickhl で確認して下さい。

t9md

もどる
blog comments powered by Disqus