在vim中查找变量的下一个出现位置

55

我想知道如何让Vim查找下一个变量及其出现位置。假设变量名只是'n',那么/n会返回该字母的所有出现位置,这并不总是特别有帮助。我想知道是否有一些命令/按键可以解决这个问题,虽然我可以创建正则表达式来解决这个问题,但我还是想知道是否有更简单的方法;由于我的所有谷歌搜索都没有结果,所以我决定在这里发问。

非常感谢您的帮助!


1
你是否正在寻找一种语法感知的工具,能够区分单词中的简单字母 n 和变量名为 n 的变量? - kriss
1
@kriss 这正是我正在寻找的,没错。但如果在没有语法意识的情况下能够获得变量/名称查找功能,我也会感到满意。 - canavanin
2个回答

76

如果你的光标在所问的变量上,你可以按下*来搜索下一个出现的变量,或者按下#来搜索前一个。

这相当于输入:

/\<n\>

(\<匹配单词的开头,\>匹配单词的结尾)。唯一的区别(由于我不确定的原因)是*#不考虑'smartcase'选项。

参见:

:help *
:help /\<

1
@Al 我以前不知道 * 和 # 能够注意到单词边界,非常感谢你指出来! - canavanin
还要查看:help pattern - Benoit
这确实是一个好的特性。但不幸的是,它不仅限于变量,因为它也可以在字符串中出现。例如,如果你有 char str[]="test"; int s = 5; printf("%s\n", str); 那么格式说明符中的 's' 也会被匹配。我敢肯定有一种方法可以做到这一点,而不需要任何外部工具,但我无论如何都想不起来是什么,或者我是否把它和其他东西混淆了,但这是一个很好的提醒关于单词边界。 - Pryftan

55

在命令模式下,如果您按下n键,它将给出您搜索的下一个匹配项。

更多细节:

  • / 将开始向前搜索
  • ? 将开始向后搜索
  • n 将会在您搜索的方向上给出下一个结果
  • N 将会在您搜索的方向上给出上一个结果

应该是 N 吧?n 是用于前一个匹配。 - Chris Maes
4
如果大写锁定键开启,那就不行了! >.> - Lucas
6
不过,在按下“n”查找下一个匹配项之前,您需要搜索该字符串。 “*”或“#”将转到光标下单词的下一个匹配项。 - Chung Lun Yuen
@ChungLunYuen 是的,没错。不过也许你并不是在字面上提出那个问题? - Pryftan
@ChrisMaes(1)我从未暗示过它是 :) (2)你想让它更完整?我试图让你的评论更完整。我指出你在方向上混淆了 - 就这样。除此之外没有其他。如果我的话让你感到被贬低,我不知道为什么,但如果它引起了任何不满,我很抱歉。我能想到的最好的解释是,也许我评论中的粗体让你认为其中有更多内容,但我向你保证没有。无论如何,正如我所指出的,N是用于前一个,n是用于下一个(因此你混淆了它们)。干杯。 - Pryftan
显示剩余5条评论

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