我在一个共同的git存储库下处理实际上由几个子项目组成的项目:
Project
- Sub Project A
- Sub Project B
- ...
我从不在主文件夹上工作,并且始终从其中一个子项目开始,问题是无论我尝试什么,CtrlP总是从repo所在的主文件夹开始搜索。
我已尝试过项目回购中的一些设置,但无论如何,例如波纹管,但仍无法让它产生任何影响。
let g:ctrlp_working_path_mode = 'ca'
请提示?
答案 0 :(得分:3)
查看CtrlP docs表明您有三种选择:
let g:ctrlp_working_path_mode = ''
。然后它只会在Vim的当前工作目录下搜索,因此只需:cd
到您的一个子项目'目录。let g:ctrlp_custom_ignore = { 'dir': '\v[\/]Sub Project [AB]$' }
(未经测试)。let g:ctrlp_root_markers = ['Sub Project A', 'Sub Project B']
。这应该会阻止CtrlP遍历这些子目录。我建议第一个选择,因为其他人对我的口味有点过于讨厌。最后一个选项在快速测试中对我没有用。
答案 1 :(得分:1)
如果您习惯从当前工作目录开始使用CtrlP,并且突然停止运行,可能是g:ctrlp_working_path_mode
的副作用,这有点不直观:它会搜索目录树直到查找源代码管理根目录(如.git
文件夹),并将其视为顶级目录。
我习惯它一直是当前项目的顶层,所以当我开始一个新项目时,它使用主目录作为根目录,我感到困惑。这是因为我尚未为新项目初始化Git,因此找到的第一个.git
目录位于我的主目录中。
为新项目初始化Git仓库使其表现出预期的效果。
这是插件帮助的相关部分:
'g:ctrlp_working_path_mode'
启动时,CtrlP会根据此设置其本地工作目录 变量: 让g:ctrlp_working_path_mode ='ra'
c - the directory of the current file. a - like "c", but only applies when the current working directory outside of CtrlP isn't a direct ancestor of the directory of the current file. r - the nearest ancestor that contains one of these directories or files: .git .hg .svn .bzr _darcs w - begin finding a root from the current working directory outside of CtrlP instead of from the directory of the current file (default). Only applies when "r" is also present. 0 or <empty> - disable this feature.
注#1:如果“ r”包含“ a”或“ c”,请使用“ a”或“ c”的行为(如 后备)找不到根。
注2:您可以使用b:var来基于每个缓冲区设置此选项。