パターンによるハイライト
これは、特定のパターンを含むすべての行を強調表示する(および別の行をクリアする)関数であり、パターン自体にアクセントが強調表示されます。「最後の検索」レジスタ@/
も要求されたパターンに設定されるため、通常モードでは、 n
/N
は一致する行を前後にジャンプします。 (ほとんどのインストールで<Leader>l
同等)は、カーソルの下を含む行を強調表示するためのショートカットです。\l
WORD
highlight def link xHiLine Special
highlight def link xHiPatt String
function! ClearHighlight()
syn clear xHiLine
syn clear xHiPatt
let @/ = ''
endfunction
function! HighlightPattern(patt)
call ClearHighlight()
if a:patt != ''
echo "Highlighting pattern: ".a:patt
exec "syn match xHiPatt \"".a:patt."\" contained"
exec "syn match xHiLine \".*".a:patt.".*\" contains=xHiPatt"
let @/ = a:patt
endif
endfunction
map <Leader>l :call HighlightPattern(expand("<cWORD>"))<CR>
map <Leader>c :call ClearHighlight()<CR>
パターンによる折りたたみ
パターンに基づく折りたたみの例については、Show-HideVimプラグインを確認してください。2つのコマンド、、、およびいくつかのショートカットマップを提供しSHOW
ますHIDE
。たとえば、は、:SHOW thread=1234
を含む行を除くすべての行を折りますが、通常モードでは、カーソルの下に下を含む行が表示されます。[の代わりに使用する、などの代替マップを作成することをお勧めします。]thread=1234
zs
word
zS
<cWORD>
<cword>
構築パターン
<cword>
十分に一意のフィルターパターンを抽出しない場合<cWORD>
(またはカーソルを適切なフィールドに移動しないようにするため)、以下のような別の関数を作成し、マップから呼び出します。
function! GetField(num)
let toks = split(getline('.'))
if len(toks) >= a:num
return toks[a:num-1]
endif
return ''
endfunction
map <Leader>hl :call HighlightPattern(GetField(3))<CR>
map <Leader>fl :exec "SHOW ".GetField(3)<CR>