使用 Vim 链接 vimgrep 和 copen

gba*_*lot 2 vim

当我必须在某些目录中递归搜索模式时,我会这样做:

:vimgrep 'some-pattern' app/views/**
Run Code Online (Sandbox Code Playgroud)

然后,我必须输入:

:copen 20
Run Code Online (Sandbox Code Playgroud)

这样我终于可以在 quikfix 窗口中看到包含“some-pattern”的文件列表了 20 行。

它完全满足我的需求,但是有什么方法可以链接这两个命令,因此每次我请求 vimgrep 时,如果我输入“:copen 20”,它都会将结果“通过管道”发送到快速修复窗口吗?

尽可能地,我更愿意坚持标准的东西(任何基于 .vimrc 的方法?),并避免使用插件在文件中查找。

我一周前才转向 Vim,谢谢你的帮助。

rom*_*inl 5

您可以将此片段添加到您的vimrc

" create a self-clearing autocommand group called 'qf'
augroup qf
    " clear all autocommands in this group
    autocmd!

    " do :cwindow if the quickfix command doesn't start
    " with a 'l' (:grep, :make, etc.)
    autocmd QuickFixCmdPost [^l]* cwindow

    " do :lwindow if the quickfix command starts with
    " a 'l' (:lgrep, :lmake, etc.)
    autocmd QuickFixCmdPost l*    lwindow

    " do :cwindow when Vim was started with the '-q' flag
    autocmd VimEnter        *     cwindow
augroup END
Run Code Online (Sandbox Code Playgroud)

:vimgrep每当您执行填充快速修复/位置列表的其他命令并且存在合格的匹配项时,这将自动打开快速修复/位置窗口。

例子:

:vim foo **/*.js
:lgrep bar *.rb
$ vim -q <(grep baz test.txt)
Run Code Online (Sandbox Code Playgroud)

参见:help autocmd:help :cwindow