使用RVM在vim中重新生成ctags

ast*_*nic 12 ruby vim rubygems ruby-on-rails ctags

我的.vimrc中有以下代码:

map <Leader>rt :!ctags --extra=+f -R *<CR><CR>
Run Code Online (Sandbox Code Playgroud)

这会为我当前的目录生成ctags.

我正在使用RVM,我正在开发不同的项目,使用不同的ruby版本(通过RVM gemsets.

每个项目我有一个不同的$ GEM_PATH,我也希望在这个路径中为gems生成ctags.

如果设置$ GEM_PATH变量,并且还要处理这些路径,上面的行应如何测试?

或者更好的是如何检查我是否有.rvmrc文件,并根据此文件的内容生成ctags?

kar*_*kie 14

我使用bundler管理宝石,所以我使用

ctags -R `bundle show rails`/../*
Run Code Online (Sandbox Code Playgroud)

获取宝石的标签.

  • 如果你升级了宝石,那么`\`bundle show rails \``将标记你曾经使用过的所有宝石.最好使用这样的东西:`ctags -e --exclude = .git --exclude ='*.log'-R*\`bundle show --paths \`` (7认同)

mar*_*ada 11

如果您使用的是rvm,则可以使用rvm gemdir.例如,这就是我正在使用的:

map <Leader>rt :!ctags --extra=+f --exclude=.git --exclude=log -R * `rvm gemdir`/gems/*<CR><CR>
Run Code Online (Sandbox Code Playgroud)

这将始终使用当前rvm gemset中的gem目录.


Luc*_*idi 6

标记所有已安装宝石的通用版本(需要一段时间):

map <silent><Leader>rt :!ctags --extra=+f --exclude=.git --exclude=log -R * `gem environment gemdir`/gems/*<CR><CR>
Run Code Online (Sandbox Code Playgroud)

如果你想只标记捆绑的宝石(更快):

map <silent> <Leader>rt :!bundle list --paths=true \| xargs ctags --extra=+f --exclude=.git --exclude=log -R *<CR><CR> 
Run Code Online (Sandbox Code Playgroud)