2013-06-27 56 views
0

我似乎想起了一个vim插件,它可以让您基本上执行“:g/pattern/p”,然后提示您选择一个。有谁知道这个插件?或者它是一个内置函数?Vim:查看页面上的所有实例并选择一个

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

谢谢!

编辑:

我希望它居然拿我行号的时候我让我选择,我想这是一个相当简单的解决方案。我很确定我已经看到了一个插件,但我不记得它是什么。有什么想法吗?

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

回答

3

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

:vim foo % | cw 

:vim foo % | cw

:help quickfix

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

+0

我很确定我看过一个插件提出这个列表,然后让你做出选择,并把你带到有问题的路线。我似乎无法找到它或记住其他任何事情。 –

+0

为什么你需要一个插件?你可以用内置的命令来完成你所要求的任何事情。一旦打开quickfix列表,您可以导航它,并在结果上点击“”以跳转到该列表,等等。阅读我提供给你的文档部分。 – romainl

2

这可能会让你关闭。它不是一个交互式菜单,但它告诉你的行号的比赛

:g/<regex>/# 

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

+0

+1这是我会回答的... –

+0

它实际上显示了没有#的行号。我想要的是我可以选择的有序选择。我知道有一个插件会提示你选择,我只是不记得它是什么... –

+0

@MrA矿不显示行号。我猜你已经在你的vimrc中有':set number',这也似乎告诉你行号 – FDinoff

0
:g/regex/p 

:g执行:p默认情况下,因此它可以被忽略;尾随斜线也可以删除:

:g/regex 

注意:g跳转到该文件中最后出现的,所以你就可以执行N/(正常模式),跳转到第N次出现。或者,如果有多场比赛,而且你不想指望你想要哪一场,那么你至少可以用LGLgg:L跳到它的这一行。

如果你不使用:set number但想在:p输出线号,追加nu[mber]#为@FDinoff提示:

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

你可以通过:vimgrep命令

:vimgrep/regex/ % 

%代表当前缓冲区的文件名填充结果到quickfix窗口。注意:缓冲区必须是文件而不是临时缓冲区。

然后使用quickfix命令(如:cnext和​​)来移动列表。或者通过:copen打开清单并按<cr>跳到比赛。

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

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

您还可以通过:vimgrep/regex/ ##vimgrep与参数列表一起使用。

如需更多帮助,请参见:

:h :vimgrep 
:h quickfix 
:h c_% 
:h arglist 
0

可以确认一个又一个变化中的所有打开的缓冲区:

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

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

+1

这似乎没有涉及到这个问题呢? –

相关问题