无法通过CtrlP将工作目录设置为根文件夹

时间:2015-04-01 19:38:52

标签: vim vim-plugin

我在一个共同的git存储库下处理实际上由几个子项目组成的项目:

Project
   - Sub Project A
   - Sub Project B
   - ...

我从不在主文件夹上工作,并且始终从其中一个子项目开始,问题是无论我尝试什么,CtrlP总是从repo所在的主文件夹开始搜索。

我已尝试过项目回购中的一些设置,但无论如何,例如波纹管,但仍无法让它产生任何影响。

let g:ctrlp_working_path_mode = 'ca'

请提示?

2 个答案:

答案 0 :(得分:3)

查看CtrlP docs表明您有三种选择:

  1. 停用CtrlP的工作目录搜索:let g:ctrlp_working_path_mode = ''。然后它只会在Vim的当前工作目录下搜索,因此只需:cd到您的一个子项目'目录。
  2. 忽略您不感兴趣的子项目目录:let g:ctrlp_custom_ignore = { 'dir': '\v[\/]Sub Project [AB]$' }未经测试)。
  3. 子项目A 子项目B 等添加为根标记:let g:ctrlp_root_markers = ['Sub Project A', 'Sub Project B']。这应该会阻止CtrlP遍历这些子目录。
  4. 我建议第一个选择,因为其他人对我的口味有点过于讨厌。最后一个选项在快速测试中对我没有用。

答案 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来基于每个缓冲区设置此选项。