默认情况下使用Vim/Ack搜索整个项目

Rob*_*ton 6 vim ack

我想使用Ack(或类似的插件,如果其他东西可以完成这项工作)默认情况下在Vim中搜索我的整个项目,而不仅仅是当前目录.理想情况下,我最终会得到一个像在Sublime中使用Cmd + Shift + F一样的过程.我怎样才能做到这一点?

像CtrlP let g:ctrlp_working_path_mode = 'r'这样的选项使得它在包含文件的最近的父目录中进行搜索.git是完美的.(https://github.com/kien/ctrlp.vim#basic-options)

Ken*_*ent 2

我认为Ack(或 grep/vimgrep)无法检测到您的“项目根”。如果您经常处理多个项目,您可以将此块添加到您的vimrc

let g:projectA_path="/path/to/A"
let g:projectB_path="/path/to/B"
let g:projectC_path="/path/to/C"
Run Code Online (Sandbox Code Playgroud)

还定义一些函数/命令,例如AckA, AckB, AckC... 基本上 func/命令就是这样做的:

exec 'Ack! '. pattern . " " . g:projectA_path
Run Code Online (Sandbox Code Playgroud)

pattern是你传入的参数。那么,将来你可以这样做:

:AckA foo
Run Code Online (Sandbox Code Playgroud)

或者

:call AckA("foo")
Run Code Online (Sandbox Code Playgroud)

用于在项目 A 中快速 grep/acking。

我没有想到更简单的方法。很高兴看到是否有更好的解决方案。