Мой корневой каталог проекта имеет следующее:Vim Ctrlp Plugin: ctrlp_root_markers игнорирует значения, которые я установил?
root/
.git
Assets
Library
obj
Temp
etc.
Ctrlp по умолчанию выглядит в этом корневом каталоге. Я хочу настроить каталог, в который он начинает искать, в «Активы». Я посмотрел на документы и читать в несколько ссылок, которые я должен использовать ctrlp_root_markers
, так что в моем vimrc
:
let g:ctrlp_root_markers = ['Assets']
Но затем вызвать Ctrlp в Vim, пока я в любом исходном файле под активами, он всегда начинает свое индексирование/поиск из каталога root
. Он просто игнорирует значения, заданные в списке корневых маркеров. (Я также пытался баловаться с ctrlp_working_path_mode
)
Я закончил с использованием этой функции (которую я нашел скрытую SO):
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-р:
nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR>
работает отлично. Но если функция должна быть включена в основной плагин, я считаю, что избыточно иметь дело с этим.
Любые идеи, что я делаю неправильно в настройке моих корневых маркеров?
Цените любую помощь!
Спасибо за ответ. Я неправильно понял. Я думал, что Ctrlp берет каталог текущего редактируемого файла и начинает навигацию до тех пор, пока не достигнет одного из определенных корней, поэтому он должен достигнуть «Активы» и остановиться. – vexe