当我执行这样的命令时:
:g/FIXME/p
它在我编写代码的部分打印匹配行。我想更多地处理这个命令的输出,所以我手动选择gvim中的输出文本,打开一个新的分割窗口并手动粘贴。但是,如果输出太大,我就不能轻易复制和粘贴。
有没有办法自动将命令输出推送到新窗口?即我想做的是这样的事情:
:g/FIXME/print_to_new_window
答案 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窗口中弹出匹配项,这对于在结果之间导航非常有用。这是它的样子:
这是在我的一个vim文件中运行:GREP fnamemodify
的结果。