首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim Ctrlp插件: ctrlp_root_markers忽略我设置的值?

Vim Ctrlp插件: ctrlp_root_markers忽略我设置的值?
EN

Stack Overflow用户
提问于 2015-07-16 10:44:00
回答 1查看 572关注 0票数 1

我的根目录有以下内容:

代码语言:javascript
复制
root/
    .git
    Assets
    Library
    obj
    Temp
    etc.

默认情况下,Ctrlp在此根目录中查找。我想把它开始查找的目录设置为“资产”。我查看了这些文档并阅读了一些我应该使用ctrlp_root_markers的链接,所以在我的vimrc

代码语言:javascript
复制
let g:ctrlp_root_markers = ['Assets']

但是,在vim中调用Ctrlp时,当我在任何源文件中的资产下时,它总是从root目录开始索引/搜索。它只是忽略了我在根标记列表中设置的值。(我也尝试过玩弄ctrlp_working_path_mode)

最后,我使用了这个函数(我发现它隐藏在这个函数中):

代码语言:javascript
复制
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:

代码语言:javascript
复制
nnoremap <C-p> :CtrlP `=FindProjectRoot("Assets")`<CR>

效果很好。但是,如果一个功能应该包含在核心插件中,我觉得要解决这个问题是多余的。

我在设置根标记时做错了什么?

感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 12:41:47

你所看到的是预期的行为。根据文档

代码语言:javascript
复制
'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,则应该包含位于该文件夹内的文件/文件夹。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31451992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档