让我先从场景开始:我在Windows上使用GVIM -
问题:我需要滚动输出按空格键或其他键以将此输出转换为新文件。
无论如何我可以跳过滚动而不会失去结果吗?
答案 0 :(得分:3)
使用Vim的:grep
命令(:vimgrep
也可以)来搜索与当前缓冲区关联的文件中的foo
:
:grep foo %
然后,在quickfix窗口中显示所有匹配项:
:cwindow
一气呵成:
:gr foo %|cw
参考:
:help :grep
:help :vimgrep
:help quickfix
:help :cwindow
答案 1 :(得分:0)
这对我很有用::!grep 'foo' path/to/file > newOutputFile.txt && vim newOutputFile.txt
它可能不像上面的romainl的答案一样干净,但我对使用:cwindow
并不是特别熟悉(现在会调查它),所以我发现创建了一个新文件和vim打开对我来说更方便一点。
另外,根据你在做什么,我是ag的粉丝,因为他喜欢做类似grep的事情。
答案 2 :(得分:0)
正如其他人所说,使用像grep
这样的工具,在Vim之外更容易进行过滤,但如果你必须......
:redir
,则可以使用:silent global/...
来抑制GVIM中的输出。它仍将由:redir
捕获。:g/<pattern>/p
来过滤匹配的行,则可以使用:vglobal/<pattern>/d
删除不匹配的行,然后通过:w another-filename
保留剩余的内容