如果我执行以下两种方法之一:
call search("searchString")
exec "/ searchString"
从脚本开始,vim会进行搜索,但不会突出显示结果,即使是hlsearch。从脚本外部执行相同的搜索会突出显示结果。
答案 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)
```
一种解决方案是
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”找到它