1

假设我在 menu.vim 中有这个功能:

  function! s:Test()
   let search = '\d\+'
   let @/ = search
   return "normal n" 
  endfunction

为什么这不突出显示搜索匹配?
只有在我:set hls在命令行中执行它之后才会突出显示。当我按下键盘上
的键时,它也会突出显示。 如果我将同一行 ( ) 放在函数中,它将不起作用。 BTW 突出显示在我的 VIM 中启用。 如果我使用命令行,它会突出显示。 n
:set hls

4

1 回答 1

1

该行为实际上可能在手册中有所描述:help functions-search-undo,但没有提及任何解决方法。

最后使用的搜索模式和重做命令“。” 不会被函数改变。这也意味着 :nohlsearch当函数返回时 的效果被撤消。

上的文档:nohlsearch也提到了这一点:

此命令在自动命令中不起作用,因为在执行自动命令时会保存和恢复突出显示状态 autocmd-searchpat调用用户函数时也是如此。

于 2012-05-01T11:48:43.340 回答