grep如何导致进入单独的缓冲区或拆分窗口

时间:2018-06-28 15:11:34

标签: vim

我尝试grep当前文件,然后将结果存储在单独的缓冲区或拆分窗口中,而不是在当前缓冲区im中
我需要它与不使用quickfix方法(vimgrep等)的简单vim一起使用 我确实尝试过这个:

:r!grep foo %

VIM: How to store the grep results in a buffer

但是它将替换当前缓冲区,并且仅执行撤消操作才能返回先前的文件内容
所以我的问题是:
 如何重定向结果或分离缓冲区或拆分窗口

2 个答案:

答案 0 :(得分:3)

  1. 打开一个新缓冲区(在垂直窗口中):

    :vnew
    
  2. 使用备用文件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的缓冲区(我相信这应该成立,因为我们已经进行了新的分割)