对于我的回购,假设它被称为top
top\
.gitignore
foo\
bar\
我希望CtrlP列出
文件foo\
下.gitignore
不会忽略
醇>
如果我进入top\foo\
,并从那里打开vim,1会满意,但不会满意2
如果我在top\
打开vim,则会满意但不满意。
如何实现1和2?
我尝试了this gitignore vim script,但是当我在回购的根文件夹中打开vim时它只解析gitignore
,所以我不能同时做1和2。
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
相同,ag
不会尝试访问repo根并从那里读取gitignore。
将g:ctrlp_working_path_mode
设置为r
,让CtrlP尊重顶层文件夹中的.gitignore
,但top\
下的所有内容都会被CtrlP列出。我只想要foo\
中的文件。
感谢。
答案 0 :(得分:11)
从its home page看起来您可以使用
let g:ctrlp_user_command = [
\ '.git', 'cd %s && git ls-files . -co --exclude-standard',
\ 'find %s -type f'
\ ]
这将有利于尊重所有git的忽略模式处理,而不仅仅是顶级正.gitiginore
模式。
答案 1 :(得分:1)
似乎没有明显的方法可以做到,所以我只是按照@kamaradclimber的建议,花了一个小时做了这个:RootIgnore
从来没有在VimScript中编码所以花了我一些时间: - )
您可以使用Vundle进行安装
它以递归方式向上搜索.git
dir,获取与.gitignore
目录相同的目录中的.git
,并相应地设置wildignore
。
更新:
@ jthill的方法比我的方法更好。
但CtrlP具有自定义搜索命令,而CommandT则没有。所以我的插件对CommandT用户仍然有用。