Vim:查看页面上的所有实例并选择一个

时间:2013-06-27 18:11:44

标签: search vim plugins

我似乎记得一个vim插件,它允许你基本上执行“:g / pattern / p”,然后提示你选择一个。有谁知道这个插件?或者它是内置函数吗?

基本上,我想执行搜索,查看当前页面上的所有实例(甚至是打开的缓冲区),然后能够选择要去的那个。

谢谢!

编辑:

我希望它在我做出选择时实际上将我带到行号,我希望它是一个相当简单的解决方案。我很确定我已经看到了这个插件,但我不记得它是什么。有什么想法吗?

PS。感谢所有回答的人。他们是很好的答案。

5 个答案:

答案 0 :(得分:3)

您可以使用:vim[grep]:gr[ep]

:vim foo % | cw

:vim foo % | cw

请参阅:help quickfix

如果你想要一个插件,你将不得不搜索vim.org。

答案 1 :(得分:2)

这可能会让你接近。它不是一个交互式菜单,但它确实告诉你匹配的行号

:g/<regex>/#

#告诉全局打印行号。请查看:h :number#:number的同义词)

答案 2 :(得分:2)

您可以通过quickfix命令

将结果填充到:vimgrep窗口中
:vimgrep/regex/ %

%表示当前缓冲区的文件名。注意:缓冲区必须是文件而不是暂存缓冲区。

然后使用quickfix:cnext:cprev命令在列表中移动。或者通过:copen打开列表,然后按<cr>跳转到匹配项。

您可以:vimgrep任意数量的文件:

  • 所有*.c个文件,例如:vimgrep/regex/ *.c
  • 使用**搜索深层目录,例如:vimgrep/regex/ **/*.c

您还可以通过vimgrep将<{1}}与args列表一起使用。

如需更多帮助,请参阅:

:vimgrep/regex/ ##

答案 3 :(得分:0)

:g/regex/p

:g默认执行:p,因此可以省略;尾部斜杠也可以删除:

:g/regex

请注意:g跳转到文件中的最后一个匹配项,因此您可以执行N/(在正常模式下)跳转到第N个匹配项。或者,如果有很多匹配并且您不想计算您想要的匹配,则至少可以使用LGLgg:L跳转到其行L。

如果您不使用:set number但希望:p的输出中包含行号,请附加nu[mber]#作为@FDinoff建议:

:g/regex/nu
:g/regex/#

答案 4 :(得分:0)

您可以使用以下命令在所有打开的缓冲区中确认一个接一个的更改:

:bufdo %s;<pattern>;<replace>;c | update

:bufdo遍历所有缓冲区。 c是确认所有更改的标志。 update写入允许转到下一个的当前缓冲区。