我的根项目目录有以下内容:
root/
.git
Assets
Library
obj
Temp
etc.
默认情况下,Ctrlp 在此根目录中查找。我想将它开始查找的目录设置为“资产”。我查看了文档并阅读了一些我应该使用的链接ctrlp_root_markers
,所以在我的vimrc
:
let g:ctrlp_root_markers = ['Assets']
但是,当我在 Assets 下的任何源文件中时,在 vim 中调用 Ctrlp 时,它总是从root
目录开始索引/搜索。它只是忽略了我在根标记列表中设置的值。(我也试过弄乱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
然后重新映射 Cp:
nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR>
工作正常。但是如果核心插件中应该包含一个功能,我觉得必须解决它是多余的。
任何想法我在设置我的根标记时做错了什么?
感谢任何帮助!