2012-11-09 51 views
8

我发现了VIM搜索的一个很好的功能,即列出所有搜索结果和相应的行号。管道搜索结果到VIM中的其他选项卡/窗口/缓冲区

例如:

:g/for.*bar/# 

问:是否有一个“简单”的方法来管/把这个到另一个窗口/标签/缓冲?

干杯!

+0

您的意思是“将此列表和数字放入新缓冲区中”? – romainl

+0

@romaini:的确如此。例如进入拆分窗口..要复制的东西,滚动。现在我得到的名单,但当我移动它“消失”。 – ezdazuzena

回答

7

我不知道如何管输出:g/for.*bar/#到一个新的缓冲区,但我知道如何使用vimgrep获得很多相同的结果。

尝试:

vimgrep "for.*bar" % 
:copen 

现在你有所有搜索结果的缓冲区,你可以在它们之间有:cn:cp甚至导航。

看看:help quickfix

+0

看起来像这个,我正在寻找。你可以如此善意地解释'%'的含义吗?究竟是什么意思是'copen',我的意思是,vimgrep的结果在哪里? – ezdazuzena

+1

@ezdazuzena当然在命令模式下''''''''可以替换为当前文件的路径。 – Benj

+0

谢谢。关于我的问题的第二部分,我在这里找到了答案:http://blogs.gurulabs.com/stuart/archives/2006/08/vimgrep-copen.html – ezdazuzena

2

我不知道如何将直接输出重定向到一个缓冲,但您可以使用redir将其发送到一个文件:

:redir > file 
:g/for.*bar/# 
:redir END 

或一个寄存器:

:redir @a 
:g/for.*bar/# 
:redir END 

有关更多信息,请参见:help :redir

+0

...然后寄存器可以被放入::put!一个'变成一个新的缓冲区。 –

1

称赞接受的答案:我做了一个映射,直接打开上次搜索与\ SS(节目搜索)quickfix窗口上,将其添加到您的.vimrc:

" show last search results on the quickfix window at windows bottom 
nnoremap <silent><leader>ss :vimgrep /<C-r>\// % <CR> :botright copen <CR> 

BR

相关问题