在 Vim 中如何不使用搜索功能跳转到下一个相同的单词

15

Vim中是否有一个快捷键可以直接跳转到和光标所在位置相同的下一个单词?它应该可以在不使用搜索命令 / 的情况下工作。

5个回答

38

* 表示跳到下一个匹配的单词,而 # 表示跳到上一个匹配的单词。 * 非常有用,有时被称为“超级明星”。


8

*#是你的好帮手(正向和反向方向)。


6
虽然这里的所有答案都是正确的,但我认为提供更多信息可能会有用。实际上,*执行的是在光标下单词的前向搜索。因为这只是一个搜索操作,所以您可以使用nN向前和向后导航到下一个出现的位置。这也意味着您之前的搜索结果会丢失。#*完全相同,只是它执行的是反向搜索。
搜索字符串中的\<\>是vim正则表达式语言中的单词边界,这就是使其如此好用的原因。还需要注意的是,什么被视为“单词”是由iskeyword选项确定的。有关更多信息,请参见:help word

1
谢谢。有没有办法选择不带边界的单词?也就是说,我有一个要搜索的单词,在多个地方出现为子单词。例如:查找“day”并匹配“Sunday”、“Monday”。 - ysap
我已经很久没怎么使用vim了,但我不记得有一种方法可以在不添加自己的映射的情况下完成这个操作。也许可以像这样使用: ":nnoremap <leader>* :let @/ = expand('<cword>') <bar> normal! n<enter>" - Randy Morris
1
谢谢,抱歉,我应该更新这个评论。我问了问题并在这里找到了答案:https://dev59.com/vKbja4cB1Zd3GeqPgG0f - ysap
啊是的。那个旧的 "g" 前缀。这会修改很多 Vim 映射的工作方式。感谢更新。 - Randy Morris

5

使用“*”来搜索光标下的当前单词。

要向后搜索当前光标单词,请使用“#”


4

gd及其变体也非常方便。 它与*的工作方式略有不同,它会搜索光标下单词的本地声明(如果没有本地声明,则搜索全局声明)。 然后,您可以使用n浏览结果,就像使用superstar一样,并跳过注释。 在编辑代码时,这可能很有帮助。

:help gd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接