私はvimrc内に次のコードを持っています
hi CurrentWordUL cterm=underline gui=underline
hi Search cterm=underline ctermfg=124 gui=underline guifg=#af0000
augroup MyHighlighter
autocmd!
" autocmd User IncSearchEnter MatchHighlighter 0
" autocmd User IncSearchExecute MatchHighlighter 1
set updatetime=700
autocmd CursorHold * if (get(g:, 'matchhl', 1) && (&ft !~ join(g:ft_blacklist, '\|')))
\ | silent! exe printf('match CurrentWordUL /\<%s\>/', expand('<cword>'))
\ | endif
autocmd CursorMoved * if (get(g:, 'matchhl', 1) && (&ft !~ join(g:ft_blacklist, '\|')))
\ | silent! exe printf('match none')
\ | endif
augroup END
nnoremap <silent> <f4> :MatchHighlighter<CR>
command! -nargs=? MatchHighlighter
\ call ToggleSetMatchHL(
\ empty(<q-args>) ? !get(g:, 'matchhl', 1) : expand(<q-args>))
function! ToggleSetMatchHL(arg) abort
match none | diffupdate | syntax sync fromstart
let g:matchhl = a:arg
endfunction
これの目的は、カーソルの下で一致する単語を強調表示(下線)することです。
私が抱えている問題は、/、?、*、#などで検索しているときです。一致するハイライトが検索のハイライトを上書きします。
とにかく「検索終了」(「検索終了」の定義はわかりませんが、誰かが何かを提案できるかもしれません)を知ることができますか、それとも「nohlsearch」が呼び出されましたか?
前もって感謝します。
:match
に切り替える場合は:call matchadd(...)
、を指定できます{priority}
。負の値は、検索の強調表示の下に強調表示を配置します(prioが0
あります。デフォルトは10
)。/
、?
、*
、など)。それは検索の開始を検出します。以下のために/
と?
、あなたが定義することができcmap <CR>
のチェックとgetcmdtype() =~# '[/?]'
検索の結論を検出します。このアプローチはお勧めしません。マッピングは他のプラグインに干渉する可能性があります。:match
、あなたは自動的に適応させることができ、現在の検索パターン(レジスタ(ハイライト表示も異なり、組み込みの検索の強調表示よりも動作しますので、ウィンドウローカルである)/
の代わりに)。私のSearchHighlightingプラグインは、:SearchAutoHighlighting
コマンドでこのアプローチを選択します。(プラグインページには、チェックアウトしたい多くの代替プラグインへのリンクがあります。私のカスタムコードスニペットよりも、手入れの行き届いたプラグインをお勧めします~/.vimrc
。)この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加