我尝试grep当前文件,然后将结果存储在单独的缓冲区或拆分窗口中,而不是在当前缓冲区im中
我需要它与不使用quickfix方法(vimgrep等)的简单vim一起使用
我确实尝试过这个:
:r!grep foo %
VIM: How to store the grep results in a buffer
但是它将替换当前缓冲区,并且仅执行撤消操作才能返回先前的文件内容
所以我的问题是:
如何重定向结果或分离缓冲区或拆分窗口
答案 0 :(得分:3)
打开一个新缓冲区(在垂直窗口中):
:vnew
使用备用文件grep
的输出填充它:
:0r!grep foo #
一口气:
:vnew | 0r!grep foo #
答案 1 :(得分:0)
我不确定这在所有情况下是否都能正常使用,但请尝试一下:
:execute "vnew" "tmp_buffer_" . winbufnr(winnr()) | execute "0r !grep foo" bufname(winbufnr(winnr()+1))
第一部分应该在垂直拆分中创建一个新的缓冲区。我给它一个下标及其与之关联的缓冲区号,以避免在多个缓冲区上运行该缓冲区时可能发生冲突。第二个执行读取操作,并通过假设要grepped的缓冲区在下一个窗口中来计算要运行grep的缓冲区(我相信这应该成立,因为我们已经进行了新的分割)