如何在vim中将命令的输出打印到新窗口

时间:2015-12-10 22:12:46

标签: vim

当我执行这样的命令时:

:g/FIXME/p

它在我编写代码的部分打印匹配行。我想更多地处理这个命令的输出,所以我手动选择gvim中的输出文本,打开一个新的分割窗口并手动粘贴。但是,如果输出太大,我就不能轻易复制和粘贴。

有没有办法自动将命令输出推送到新窗口?即我想做的是这样的事情:

:g/FIXME/print_to_new_window

2 个答案:

答案 0 :(得分:5)

如果要在缓冲区中找到所有匹配的行并粘贴到新窗口/缓冲区,则可以执行以下操作:

:let @a=''|g/FIXME/y A

此行将保存寄存器FIXME中所有匹配的(包含a)行。

现在你可以打开一个窗口,例如:vnew然后粘贴a

中的内容
"ap

如果您真的想要保存命令的输出,则必须使用:redir命令,查看帮助(:h :redir)以获取详细信息,这是很好的解释。

答案 1 :(得分:2)

您可能有兴趣使用quickfix窗口存储匹配结果。 vim wiki上有关于此的一些信息。这里的示例显示了如何匹配光标下的当前单词,但您可以使用以下内容:

vim command! -nargs=1 GREP :execute 'vimgrep '.string(<q-args>).' '.expand('%') | :copen | :cc

然后GREP FIXME会在quickfix窗口中弹出匹配项,这对于在结果之间导航非常有用。这是它的样子:

quickfix

这是在我的一个vim文件中运行:GREP fnamemodify的结果。