我似乎想起了一个 vim 插件,它基本上可以让你执行 ":g/pattern/p" 然后提示你选择一个。有人知道这个插件吗?或者它是一个内置函数?
基本上,我想执行搜索,查看当前页面上的所有实例(甚至在打开的缓冲区中),然后能够选择要转到哪个实例。
谢谢!
编辑:
我希望它在我进行选择时真正将我带到行号,并且我希望它是一个相当简单的解决方案。我很确定我已经看到了一个插件,但我不记得它是什么了。有什么想法吗?
PS。感谢所有回答的人。他们是很好的答案。
您可以使用:vim[grep]
或:gr[ep]
。
:vim foo % | cw
见:help quickfix
。
如果你想要一个插件,你必须搜索 vim.org。
您可以通过命令将结果填充到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
这可能会让你接近。它不是交互式菜单,但它会告诉您匹配的行号
:g/<regex>/#
#
告诉全局打印行号。看看:h :number
(#
是的同义词:number
)
您可以通过以下方式在所有打开的缓冲区中确认一项又一项更改:
:bufdo %s;<pattern>;<replace>;c | update
:bufdo
穿过所有缓冲区。c
是确认所有更改的标志。update
写入允许进入下一个缓冲区的当前缓冲区。
:g/regex/p
:g
默认执行:p
,所以可以省略;尾部斜杠也可以删除:
:g/regex
请注意,:g
跳转到文件中的最后一个匹配项,因此您可以执行N/
(在正常模式下)跳转到第 N 个匹配项。或者,如果有很多匹配项,而您不关心您想要哪一个,您至少可以使用LG
orLgg
或跳转到它的行:L
L。
如果您不使用:set number
但希望在:p
、 appendnu[mber]
或#
@FDinoff 的输出中使用行号:
:g/regex/nu
:g/regex/#