当我必须在某些目录中递归搜索模式时,我会这样做:
: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,谢谢你的帮助。
您可以将此片段添加到您的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。