gVim的异步执行插件:asyncrun.vim

又来分享gVim的配置了,这次主要讲的是asyncrun.vim插件,这款插件是一款异步执行外部命令并且输出到QuickFix中的插件。

首先是异步生成Ctags文件的功能:

" 支持UNC路径的命令
function! s:UNCPathCmd(cmd)
    let a:path = substitute(getcwd(), "\\", "/", "g")
    return substitute(a:cmd, "%p", a:path, "g")
endfunction
command! Tags exe <SID>UNCPathCmd('AsyncRun ctags -R -o %p/tags %p')

我的配置可以在当前目录异步生成Ctags文件,并且支持UNC之类的路径(主要是操作samba上的文件的时候需要用到)

上面这些只是简单的使用,下面是异步查找文件内容的一些配置:

function! s:QuickFixToggle(...)
    if 0 < a:0
        silent! cclose
        exec 'call asyncrun#quickfix_toggle(10) | AsyncRun rg --vimgrep '.a:1
    else
        call asyncrun#quickfix_toggle(10)
    endif
endfunction
command! -nargs=? Grep call <SID>QuickFixToggle(<f-args>)

主要是调用ripgrep命令来快速搜索文件内容并且异步输出到QuickFix上,而且调用quickfix_toggle函数可以在异步输出时继续编辑文件,Grep如果不输入参数就会直接打开quickfix窗口。

下面是演示:

补充内容:

  • 配合QFGrep插件来实现过滤Quickfix中的内容。
  • 简单修复下QuickFixToggle方法,避免在已经打开Quickfix的时候再去搜索会关闭窗口。

没有评论: