我似乎记得一个vim插件,它允许你基本上执行“:g / pattern / p”,然后提示你选择一个。有谁知道这个插件?或者它是内置函数吗?
基本上,我想执行搜索,查看当前页面上的所有实例(甚至是打开的缓冲区),然后能够选择要去的那个。
谢谢!
编辑:
我希望它在我做出选择时实际上将我带到行号,我希望它是一个相当简单的解决方案。我很确定我已经看到了这个插件,但我不记得它是什么。有什么想法吗?
PS。感谢所有回答的人。他们是很好的答案。
答案 0 :(得分:3)
您可以使用:vim[grep]
或:gr[ep]
。
: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个匹配项。或者,如果有很多匹配并且您不想计算您想要的匹配,则至少可以使用LG
或Lgg
或:L
跳转到其行L。
如果您不使用:set number
但希望:p
的输出中包含行号,请附加nu[mber]
或#
作为@FDinoff建议:
:g/regex/nu
:g/regex/#
答案 4 :(得分:0)
您可以使用以下命令在所有打开的缓冲区中确认一个接一个的更改:
:bufdo %s;<pattern>;<replace>;c | update
:bufdo
遍历所有缓冲区。 c
是确认所有更改的标志。 update
写入允许转到下一个的当前缓冲区。