如何触发搜索或nohlsearch的结束



我在我的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)。
  • 没有"搜索结束"的事件。您可以覆盖所有与搜索相关的命令(/?*等);那将检测搜索的开始。对于/?,您可以使用getcmdtype() =~# '[/?]'检查cmap <CR>来检测搜索的结论。我不建议这种方法;映射可能会干扰其他插件。
  • 而不是使用:match(这是窗口本地,因此突出显示的行为也与内置搜索突出显示不同),而是可以自动调整当前搜索模式(寄存器/)。我的searchHighlighting插件使用其:SearchAutoHighlighting命令选择此方法。(插件页面具有指向许多替代插件的链接;我希望通过我的~/.vimrc中的自定义代码段来维护良好的插件。)

相关内容

  • 没有找到相关文章

最新更新