不移动光标即可突出显示搜索词

不移动光标即可突出显示搜索词

使用 Vim 时,我有时会发现自己盯着一段源代码看了一会儿,突然想让屏幕上的某个变量弹出来。这很简单:/<var>它会突出显示所有变量。我的问题是,搜索通常会移动我的窗口,所以我不是从同一个地方查看源代码。即使它只移动了几行,它仍然会让我感到困惑,因为我需要花几秒钟才能弄清楚东西移到了哪里。

是否可以突出显示搜索词而不将光标移动到下一个匹配项?

答案1

http://vim.wikia.com/wiki/VimTip1572

如果你使用了这个插件,你可以简单地启用该功能

\米

然后使用数字键盘键在任何地方为该单词分配颜色,而无需移动光标。

1

您可以同时对许多不同的词语使用多种不同的突出显示,或者如果您愿意的话,使用更复杂的搜索模式。

答案2

skyblue 的回答展示了如何使用普通搜索突出显示来完成您想要的操作的核心思想。

我扩展了这项技术,制作了一个类似于*命令,但实际上并没有转到下一场比赛。

谢谢加里约翰指出expand()相当于*的单词选择(以避免使用*自身并恢复视图)。这足够简化代码,以便它可以直接进入映射(避免使用函数)。我还添加了一个匹配部分单词的映射(如 g*)。

:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>

答案3

您还可以将搜索寄存器设置为您想要匹配的变量。

首先,确保搜索突出显示已打开:

:set hlsearch

然后,您可以使用以下命令设置搜索寄存器:

:let @/="variable"

这将突出显示变量的所有出现,而不跳转到下一个匹配。

有关详细信息,请参阅For more information, see:help @/

答案4

此外:

 :set hlsearch

您可能想要:

 : set noincsearch

相关内容