如何在 Vim 中所有打开的标签页中搜索当前单词?

Ste*_*and 17 vim

当光标位于当前单词上时,我已经开始使用*和学习 Vim 单词搜索#。但此搜索仅限于当前文件缓冲区。

是否有命令或快捷方式将此搜索扩展到:

  1. 所有打开的标签?
  2. 所有打开的缓冲区?

gol*_*cks 8

这实际上是默认行为,尽管可能很难注意到:尝试*然后更改为另一个选项卡并在命令模式下使用nansN在搜索命中之间向前和向后跳转。

如果首先为所有点击打开突出显示,这可能更有意义:

:set hlsearch
Run Code Online (Sandbox Code Playgroud)

  • 重点是不必循环浏览您的选项卡以查找所有匹配项。 (2认同)

Mag*_*nus 6

 :bufdo vimgrepadd yoursearchterm % | copen
Run Code Online (Sandbox Code Playgroud)


Mar*_*rco 5

我没有针对您的问题的确切解决方案,希望会出现比我更好的答案。但这就是我解决在所有缓冲区中查找单词的问题的方法。

" enables to search in all open buffers with :Search <pattern>
command! -nargs=1 Search call setqflist([]) | silent bufdo grepadd! <args> %

nnoremap <left>  :cprev<cr>zvzz
nnoremap <right> :cnext<cr>zvzz
Run Code Online (Sandbox Code Playgroud)

第一行创建一个Search以搜索模式作为参数的命令,它将结果写入一个 quickfix 列表。另外两行将(至少对我而言)无用的箭头键映射到有用的东西;它们被映射为跳转到下一个/上一个搜索或下一个/上一个编译错误等,它们只需遍历快速修复列表。您可以按如下方式使用它:

:Search foobar
<right>
<right>
…
Run Code Online (Sandbox Code Playgroud)