问题 如何从vim脚本打开搜索突出显示?


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

call search("searchString")

exec "/ searchString"

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


4528
2017-11-26 13:00


起源

我自己也找到了答案..总是那样。这是:call search(l:searchString)调用matchadd('Search',l:searchString) - crelbor
请在此处将您的答案添加为真实答案。当你真正寻找答案时,很难发现评论。 - innaM


答案:


刚刚找到了答案:

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

10
2017-11-26 13:12



这是否允许正常使用n / N进行下一个/上一个匹配? - alesplin
这真的有帮助! - Life
@alesplin: 这个 以下回答说没有。我发了一个 解。 - Aaron Thoma


feedkeys()

功能是关键(双关语):

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

或清洁:

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

2
2017-12-11 04:47





我知道这已经很晚了。然而,当我搜索这个问题的答案时,这个页面出现了。所以我觉得有必要帮忙修复它。

呼叫搜索(l:searchString)

call matchadd('Search',l:searchString)

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

Vim从脚本中搜索并突出显示控件

哪个给了我:

让@ / = l:searchString

然后运行

正常的

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


1
2017-12-30 01:41





要开启,请按 退出  类型 :set hls

要关闭,请按 退出 类型 :set nohls


1
2018-03-19 11:26



-1:从脚本中不能按需运行。 - Aaron Thoma


在这里找到答案: 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() 

```


0
2018-03-07 15:46





您需要将它放在.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”找到它。


-3
2017-11-26 13:03



这是关于vim中的脚本编写,而不是通常突出显示搜索和语法突出显示。 - crelbor