Vim Ctrlp 插件:ctrlp_root_markers 忽略了我设置的值?
Vim Ctrlp Plugin: ctrlp_root_markers ignores the values I set?
我的项目根目录如下:
root/
.git
Assets
Library
obj
Temp
etc.
默认情况下,Ctrlp 在此根目录中查找。我想将它开始查找的目录设置为 "Assets"。我查看了文档并阅读了一些我应该使用的链接 ctrlp_root_markers
,所以在我的 vimrc
:
let g:ctrlp_root_markers = ['Assets']
但是当我在 Assets 下的任何源文件中时,在 vim 中调用 Ctrlp,它总是从 root
目录开始它的 indexing/search。它只是忽略了我在根标记列表中设置的值。 (我也试过搞乱ctrlp_working_path_mode
)
我最终使用了这个函数(我发现它是隐藏的):
function! FindProjectRoot(lookFor)
let pathMaker='%:p'
while(len(expand(pathMaker))>len(expand(pathMaker.':h')))
let pathMaker=pathMaker.':h'
let fileToCheck=expand(pathMaker).'/'.a:lookFor
if filereadable(fileToCheck)||isdirectory(fileToCheck)
return expand(pathMaker).'/'.a:lookFor
endif
endwhile
return 0
endfunction
然后重映射C-p:
nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR>
工作正常。但是,如果一个功能应该包含在核心插件中,我觉得必须解决它是多余的。
知道我在设置根标记时做错了什么吗?
感谢任何帮助!
您看到的是预期的行为。根据 docs:
'g:ctrlp_root_markers'
Use this to set your own root markers in addition to the default ones (.git,
.hg, .svn, .bzr, and _darcs). Your markers will take precedence:
let g:ctrlp_root_markers = ['']
请注意,在 git 项目中,.git 文件夹位于 内部 项目根目录中,如您的示例所示。通过将 Assets
作为根标记,您没有任何改变。
如果您打算将项目根目录更改为 Assets
,那么您应该在该文件夹中包含一个 file/folder。
我的项目根目录如下:
root/
.git
Assets
Library
obj
Temp
etc.
默认情况下,Ctrlp 在此根目录中查找。我想将它开始查找的目录设置为 "Assets"。我查看了文档并阅读了一些我应该使用的链接 ctrlp_root_markers
,所以在我的 vimrc
:
let g:ctrlp_root_markers = ['Assets']
但是当我在 Assets 下的任何源文件中时,在 vim 中调用 Ctrlp,它总是从 root
目录开始它的 indexing/search。它只是忽略了我在根标记列表中设置的值。 (我也试过搞乱ctrlp_working_path_mode
)
我最终使用了这个函数(我发现它是隐藏的):
function! FindProjectRoot(lookFor)
let pathMaker='%:p'
while(len(expand(pathMaker))>len(expand(pathMaker.':h')))
let pathMaker=pathMaker.':h'
let fileToCheck=expand(pathMaker).'/'.a:lookFor
if filereadable(fileToCheck)||isdirectory(fileToCheck)
return expand(pathMaker).'/'.a:lookFor
endif
endwhile
return 0
endfunction
然后重映射C-p:
nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR>
工作正常。但是,如果一个功能应该包含在核心插件中,我觉得必须解决它是多余的。
知道我在设置根标记时做错了什么吗?
感谢任何帮助!
您看到的是预期的行为。根据 docs:
'g:ctrlp_root_markers'
Use this to set your own root markers in addition to the default ones (.git,
.hg, .svn, .bzr, and _darcs). Your markers will take precedence:
let g:ctrlp_root_markers = ['']
请注意,在 git 项目中,.git 文件夹位于 内部 项目根目录中,如您的示例所示。通过将 Assets
作为根标记,您没有任何改变。
如果您打算将项目根目录更改为 Assets
,那么您应该在该文件夹中包含一个 file/folder。