1

我仍在学习像专业人士一样使用 vim。在此过程中,我注意到当我在项目目录中的子模块中打开文件时,CtrlP 插件会将搜索的根切换到子模块目录的根。有没有办法防止这种情况并将根搜索目录保留为原始项目之一或最初打开的那个?

4

3 回答 3

8

您可能想要调整g:ctrlp_working_path_mode设置。在我看来,您很可能只想完全禁用此功能并手动设置您的工作目录:cd

GitHub 上的当前 ctrlp 文档:

When starting up, CtrlP sets its local working directory according to this
variable: 

  let 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.

Note #1: if "a" or "c" is included with "r", use the behavior of "a" or "c" (as
a fallback) when a root can't be found.

Note #2: you can use a |b:var| to set this option on a per buffer basis.
于 2012-11-05T18:20:47.410 回答
3

在您的 .vimrc 中,您必须通过设置更改 CtrlP 行为:

let g:ctrlp_working_path_mode = 'rw'

使用此设置,它将在外部当前工作目录中查找版本控制文件。

然后在处理您的项目之前,您将 dir 更改为其主文件夹,main .git 所在的位置或其中的一个目录(不是在子模块中):

:cd my/project/main/path

如果您在子模块中打开一个文件,并且在点击 Cp 时,如果当前的工作目录在子模块之外,它仍然会使用您的主 .git 所在的文件。

于 2015-06-16T23:32:15.660 回答
1

我有这些映射在我的~/.vimrc

nnoremap <leader>f :CtrlP<CR>
nnoremap <leader>F :CtrlPCurWD<CR>

如果我想在项目中的任何位置打开文件,我使用第一个,如果我想打开附近的文件,我使用第二个。

于 2012-11-05T19:38:10.613 回答