如何在unite.vim中使用vim中的ack或ag?

Jef*_*eff 5 vim ack ag

我找到了很多配置示例的页面,例如:

let g:unite_source_grep_command = 'ag'
let g:unite_source_grep_default_opts =
  \ '--line-numbers --nocolor --nogroup --hidden --ignore '
let g:unite_source_grep_recursive_opt = ''
Run Code Online (Sandbox Code Playgroud)

要么

" Use ag for searching
let g:unite_source_rec_async_command =
  \ 'ag --follow --nocolor --nogroup --hidden -g ""'
let g:ackprg = 'ag --nogroup --column'
nnoremap <space>/ :Unite grep:.<cr>
Run Code Online (Sandbox Code Playgroud)

不幸的是,我真的不明白这些是做什么或为什么.我用它做了些什么,并得到了我想要的工作的一部分.

理想情况下,我只想要类似于Ack.vim所做的事情:

  1. 我点击了一些键映射,让我们说/
  2. 我输入了我的搜索查询
  3. 这会在顶部打开一个Unite.vim缓冲区,它会异步使用ack或ag来搜索我的搜索查询
  4. 我可以浏览结果并选择一个或一些以分割打开

gre*_*ory 1

也许我错过了这个问题的精神,但如果您只需要使用 ag 配置 Unite,那很简单:在您的 .vimrc 中添加:

let g:unite_source_grep_command="ag"
let g:unite_source_grep_default_opts="-i --nocolor --nogroup"
Run Code Online (Sandbox Code Playgroud)

在 vim 中,您可以像这样调用搜索:

:Unite grep:.
pattern: foobar
Run Code Online (Sandbox Code Playgroud)

注意:Unite 不附带预定义的映射,因此您必须添加自己的映射。如果 Unite 的功能太多,无法满足您的需求,请考虑将 Ack.vim 与 ag 一起使用(Ag.vim 不再维护。)这两个插件都满足您理想的使用模式;但Unite 做得更多。