如何打开vim脚本中的搜索突出显示?

时间:2009-11-26 13:00:23

标签: vim

如果我执行以下两种方法之一:

call search("searchString")

exec "/ searchString"

从脚本开始,vim会进行搜索,但不会突出显示结果,即使是hlsearch。从脚本外部执行相同的搜索会突出显示结果。

7 个答案:

答案 0 :(得分:10)

我自己找到了答案:

call search(l:searchString)
call matchadd('Search', l:searchString)

答案 1 :(得分:3)

feedkeys()

功能是关键(双关语):

call feedkeys("/pattern\<CR>")

或清洁:

" highlights – or doesn’t – according to 'hlsearch' option
function SearcH(pattern)
    let @/ = a:pattern
    call feedkeys("/\<CR>")
endfunction 

答案 2 :(得分:1)

我知道这已经很晚了。但是当我搜索到这个问题的答案时,这个页面出现了。所以我觉得有必要帮忙解决它。

  

调用搜索(l:searchString)

     

调用matchadd('Search',l:searchString)

对我不起作用。 (当从函数内部运行时)它确实高亮了我想要搜索的单词,但是n / N不会在它们之间循环。此外,当我执行新搜索时,“l:serachStirng”模式仍然保持突出显示。这个链接的答案效果更好

Vim search and highlighting control from a script

哪位给了我:

  

让@ / = l:searchString

然后运行

  

正常n

在功能之外(因此突出显示是在没有用户需要按n的情况下立即完成的)

答案 3 :(得分:1)

要开启,请按 ESC 键入:set hls

要关闭,请按 ESC 键入:set nohls

答案 4 :(得分:0)

在这里找到答案: http://vim.1045645.n5.nabble.com/highlighting-search-results-from-within-a-function-tt5709191.html#a5709193

```

一种解决方案是

function! XXXX() 
    execute '/this' 
    return @/ 
endfunction 

并使用以下代替“:call XXXX()”。

:let @/ = XXXX() 

```

答案 5 :(得分:0)

我相信这可以从函数内部进行 (仅启用突出显示,仅此而已):

call feedkeys(":\<C-u>set hlsearch \<enter>")

答案 6 :(得分:-3)

您需要将其放在.vimrc文件中

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

.vimrc文件通常位于您的主目录中,或者您可以使用“locate .vimrc”找到它