如何从Vim搜索列表中跳转到某个匹配项

6
在Vim编辑器中,我选择了一个C++代码中的函数,使用了]I。这会出现一个列表,显示信息为'按Enter或输入命令继续'
现在,要跳转到第6个出现位置,我输入6 - 但这并没有起作用。
在这种情况下,我可以输入哪些命令,并且如何从该列表中跳转到第N个出现位置?
更新:
实际上,我尝试了:N(例如::6)- 但是当我输入:时,Vim进入插入模式,冒号被插入到代码中。
更新:
假设:N方法是正确的,但即使完全卸载和重新安装Vim,而没有进行任何配置,也没有帮助 - 尽管现在输入:不会将Vim切换到插入模式。
7个回答

2
它应该向您呈现一个列表,例如:
1:   345 my_func (int var)
2:  4523 my_func (int var)
3: 10032 my_func (3);

第二列是行号。输入 :345 跳转到第 345 行。

John 实际上我尝试过:N(例如::6)- 但是当我输入:时,Vim会进入插入模式,并且冒号会被插入到代码中。 - vikramsjn
听起来你的配置很不寻常。如果冒号进入插入模式,那么你如何输入像:w这样的命令? - John Millikin
:w 命令无法进入插入模式。而其他所有功能似乎都能正常运行。实际上我记得以前用过 :N 命令,但今天突然间好像它停止工作了。尽管我认为我已经一年没有修改我的 Vim 配置文件了。 - vikramsjn
1
所以,当你输入:w时它完美地工作,但是当你输入:6时,一旦你输入冒号,它就被插入到代码中了?你不需要StackOverflow,你需要一个年轻的牧师和一个老牧师。 - John Millikin

1

我曾经遇到过同样的问题,通过整合之前的答案并进行实验,我得出了这个解决方案:

[I  // gives list of matches for word under cursor, potentially some matches are in headers. remember the number of the match you're interested in, eg. the 3rd
q  // quits the list of matches
3[Ctrl-i  // (with cursor in same position) jumps to third match

1

在vim中输入:h tselect可以查看完整定义

如果您已经看到要使用的标签,可以键入“q”并输入数字。


1
如果你按下跳跃按钮,然后得到一个可能目标的列表,请选择数字,再次按下跳跃按钮。
所以给定:
1:   345 my_func (int var)
2:  4523 my_func (int var)
3: 10032 my_func (3);

如果你按下'2]|',它应该直接跳转到那一行。

0

0

当我使用vim时,我通过执行以下操作跳转到标签:

 :tag getfirst

我看到的东西长这样:

  # pri kind tag               file
  1 F   m    getfirst          /home/sthorne/work/.../FormData.py
               class:FakeFieldStorage
               def getfirst(self, k, default):
    ....
  8 F   m    getfirst          /home/sthorne/work/.../CGIForm.py
               class:CGIForm
               def getfirst(self, name):
Choice number (<Enter> cancels):

我输入'5'来跳转到第五个出现的位置。

如果你的vim没有这种行为(我的vim似乎默认就有这种行为), 你可以使用g]代替ctrl-], 这类似于使用:tselect代替:tag


-2

尝试使用123G跳转到第123行(参见:h G)。


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