关于 vim 插件:如何在 Vim 会话期间更改 Indexer 使用的项目?

How to change the project used by Indexer during a Vim session?

我正在尝试使用 Indexer (vimscript #3221) 来索引使用 project.vim (vimscript #69) 创建的特定项目的文件。正如插件的文档所说,如果我没有在 ~/.vimrc 中设置 g:indexer_projectsSettngsFilename 变量,它默认使用 ~/.vimprojects 文件。但我希望能够指定项目而不在 ~/.vimrc 中设置该变量(即,我想以更本地的方式进行)。

我试图在 _vimrc_local.vim 中设置 g:indexer_projectsSettngsFilename,在 Vim 启动后手动设置它,一旦设置了变量,重新获取插件(通过运行 :so),然后运行 ??:IndexerRebuild。在任何一种情况下,插件都不会为项目创建索引文件。

那么如何让 Indexer 在 Vim 会话期间更改其项目?


Indexer 插件有一个依赖项:Vimprj,它管理不同项目的选项:正是您需要的。

Indexer 存储库在 doc/examples 目录下有一些示例。例如,检查 doc/examples/vimprj_indexer_files.

总之,在你的项目根目录下,你需要创建.vimprj目录,之后,当你打开你的项目目录下的某个文件时,所有.vimprj/*.vim文件都会被source,而 变量将设置为您的项目的路径(比 .vimprj 目录高一级)。

我通常把我的 .indexer_files 也放在 .vimprj 目录中,并从 .vimprj/my.vim 文件中引用它,如下所示:

1
2
3
4
5
" get path to".vimprj" folder
let s:sPath = expand('<sfile>:p:h')

" specify our".vimprj/.indexer_files"
let g:indexer_indexerListFilename = s:sPath.'/.indexer_files'

我可以像这样从 .indexer_files 引用到 $INDEXER_PROJECT_ROOT

1
2
3
4
[my_project]
option:ctags_params ="--langmap=c:.c.h --languages=c"

$INDEXER_PROJECT_ROOT

欲了解更多信息,请参阅文章:Vim:为您的项目提供方便的代码导航,它彻底解释了 Indexer Vimprj 的使用。