我想使用Ack(或类似的插件,如果其他东西可以完成这项工作)默认情况下在Vim中搜索我的整个项目,而不仅仅是当前目录.理想情况下,我最终会得到一个像在Sublime中使用Cmd + Shift + F一样的过程.我怎样才能做到这一点?
像CtrlP let g:ctrlp_working_path_mode = 'r'这样的选项使得它在包含文件的最近的父目录中进行搜索.git是完美的.(https://github.com/kien/ctrlp.vim#basic-options)
我认为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。
我没有想到更简单的方法。很高兴看到是否有更好的解决方案。