【发布时间】:2013-02-06 07:17:24
【问题描述】:
如果我开箱即用地运行 Ctrl-P,它可以 100% 正常工作,除了我使用的代码库的大小,索引目录需要很长时间。
为了让 Ctrl-P 适应我正在处理的项目大小,我在我的 .vimrc 文件中使用以下(相当流行的)user_command 设置来提供本机帮助工具,以便更快地为 Ctrl-P 提供可用文件列表:
if has("unix")
let g:ctrlp_user_command = {
\ 'types': {
\ 1: ['.git/', 'cd %s && git ls-files']
\ },
\ 'fallback': 'find %s -type f | head -' . g:ctrlp_max_files
\ }
endif
这种方法使索引速度非常快,但是当以这种方式配置时,Ctrl-P 不会像在没有帮助程序的情况下运行时那样了解 git 子模块的内容(因为 'git ls-files' 不会递归进入子模块,而 Ctrl-P 的幼稚目录遍历确实如此)。
我也尝试使用“查找”来索引 git 存储库,但是当我这样做时,我最终会索引 .git 目录、目标文件以及 Ctrl-P 通常知道会自动忽略的各种其他东西;似乎提供 user_command 完全取代了有关要忽略哪些文件的内置逻辑。我可能可以组合一个逆 grep 来删除某些元素,但似乎有人必须想出一个更优雅的解决方案。
除了依靠其缓慢的内置搜索之外,还有其他更聪明的方法可以让 Ctrl-P 索引 git 存储库中的所有文件,包括其所有子模块中的文件?
【问题讨论】:
-
It looks 就像 Git 不会跟踪子模块中的文件。您必须主动添加它们以供
git ls-files显示。
标签: git vim git-submodules vim-plugin