0

我似乎想起了一个 vim 插件,它基本上可以让你执行 ":g/pattern/p" 然后提示你选择一个。有人知道这个插件吗?或者它是一个内置函数?

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

谢谢!

编辑:

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

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

4

5 回答 5

3

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

:vim foo % | cw

:vim 富 % |  连续波

:help quickfix

如果你想要一个插件,你必须搜索 vim.org。

于 2013-06-27T19:11:11.130 回答
2

您可以通过命令将结果填充到quickfix窗口中:vimgrep

:vimgrep/regex/ %

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

然后使用和之quickfix类的命令在列表中移动。或通过打开列表并按下以跳转到匹配项。:cnext:cprev:copen<cr>

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

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

您还可以vimgrep通过 args 列表使用:vimgrep/regex/ ##

如需更多帮助,请参阅:

:h :vimgrep
:h quickfix
:h c_%
:h arglist
于 2013-06-27T19:14:10.910 回答
2

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

:g/<regex>/#

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

于 2013-06-27T18:18:55.953 回答
0

您可以通过以下方式在所有打开的缓冲区中确认一项又一项更改:

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

:bufdo穿过所有缓冲区。c是确认所有更改的标志。update写入允许进入下一个缓冲区的当前缓冲区。

于 2013-06-28T11:33:00.163 回答
0
:g/regex/p

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

:g/regex

请注意,:g跳转到文件中的最后一个匹配项,因此您可以执行N/(在正常模式下)跳转到第 N 个匹配项。或者,如果有很多匹配项,而您不关心您想要哪一个,您至少可以使用LGorLgg或跳转到它的行:LL。

如果您不使用:set number但希望在:p、 appendnu[mber]#@FDinoff 的输出中使用行号:

:g/regex/nu
:g/regex/#
于 2013-06-27T19:00:19.327 回答