我的根项目目录包含以下内容:
root/
.git
Assets
Library
obj
Temp
etc.
默认情况下,Ctrlp会在此根目录中查找。我想将它开始查找的目录设置为“Assets”。我查看了文档并阅读了一些我应该使用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
然后重新映射C-p:
nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR>
工作正常。但是如果一个功能应该包含在核心插件中,我觉得必须解决这个问题是多余的。
我在设置根标记时遇到了什么错误?
感谢任何帮助!
答案 0 :(得分:1)
您所看到的是预期的行为。根据{{3}}:
Assets
请注意,在git项目中,.git文件夹是在项目根目录中,如示例所示。通过包含Assets
作为根标记,您什么都没做。
如果您打算将项目根目录更改为 <?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
from php manual
var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>
,那么您应该包含位于该文件夹内的文件/文件夹。