Vim Advent Calendar 2013 150日目:Vim で任意の列をハイライトする
この記事は Vim Advent Calendar 2013 150日目の記事になります。
参加者募集中です。
Vim には \%v で任意の表示列目にマッチする正規表現があるのですがそれを利用して任意の列をハイライトするようなスクリプトを簡単に書いてみました。
" 使い方 " " ハイライトを有効 " {列数}HlColumnsOn {ハイライトグループ} " " ハイライトを無効 " {列数}HlColumnsOff {ハイライトグループ} " " Example " 81 列目を "Search" でハイライト " 81HlColumnsOn Search " 自動で 81 列目をハイライトする augroup hi-clumns autocmd! autocmd WinEnter * :81HlColumnsOn ErrorMsg augroup END function! s:hl_clumns_on(col, ...) let group = get(a:, 1, "CursorColumn") let group = group == "" ? "CursorColumn" : group if !exists("w:hl_clumns_id" . group . a:col) let id = matchadd(group, '\%' . a:col . 'v') if id == -1 return endif let { "w:hl_clumns_id" . group . a:col } = id endif endfunction function! s:hl_clumns_off(col, ...) let group = get(a:, 1, "CursorColumn") let group = group == "" ? "CursorColumn" : group if exists("w:hl_clumns_id" . group . a:col) call matchdelete(eval("w:hl_clumns_id" . group . a:col)) unlet { "w:hl_clumns_id" . group . a:col } endif endfunction command! -nargs=? -count -complete=highlight \ HlColumnsOn call s:hl_clumns_on( <count>, <q-args>) command! -nargs=? -count -complete=highlight \ HlColumnsOff call s:hl_clumns_off(<count>, <q-args>)
簡単に書くつもりがちょっと複雑になってしまった。
『1行は80文字まで』みたいなコーディング規約がある場合に目印として使用できそう。