如果我在 native 开箱即用地运行 Ctrl-P,它可以 100% 按我的意愿工作,除了我使用的代码库的大小,索引目录需要很长时间。
为了让 Ctrl-P 处理我正在处理的项目大小,我在我的 .vimrc 文件中使用以下(相当流行的)user_command 设置来提供 native 帮助实用程序,以便更快地为 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 存储库中的所有文件,包括其所有子模块中的文件,而不是诉诸其缓慢的内置搜索?
最佳答案
您可以使用带有选项的查找来过滤掉您不需要的文件,例如:
find . -type f \( -name "*.cpp" -or -name "*.h" \)
或删除 .git 目录:
find . -path '.git' -prune -o -print
但这不是一个聪明的解决方案。
关于git - 如何让 Vim Ctrl-P 插件在 git 子模块中索引文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723589/