2010-12-27 8 views
12

Mam następujący kod w moim .vimrc:zregenerować ctags w vim wykorzystujące RVM

map <Leader>rt :!ctags --extra=+f -R *<CR><CR> 

Generuje ctags dla mojego obecnego katalogu.

Używam RVM, pracuję nad różnymi projektami, w różnych wersjach Ruby (gemsets koryta RVM.

Mam inny $ GEM_PATH na projekt i chcę, aby wygenerować ctags dla klejnotów w tym kierunku zbyt.

Jak powinna być powyżej linii aby sprawdzić, czy zmienna $ GEM_PATH jest ustawiona, a przetwarzanie tych ścieżek zbyt?

Albo jeszcze lepiej, jak sprawdzić, czy mam plik .rvmrc i generować ctags w zależności od zawartości tego pliku?

Odpowiedz

14

używam Bundler zarządzać klejnotów, więc używam

ctags -R `bundle show rails`/../* 

dostać tagi dla kamieni.

+0

dzięki, masz literówkę: wiązka pokaz szyny, fajny pomysł – astropanic

+0

dziękuję, zrobię Edit ... – karmajunkie

+0

Nie powinno być backtics całym dowództwem wiązki - nie może uzyskać SO, aby poprawnie je renderować. – karmajunkie

11

Jeśli używasz rvm, możesz użyć rvm gemdir. Na przykład, to właśnie używam:

map <Leader>rt :!ctags --extra=+f --exclude=.git --exclude=log -R * `rvm gemdir`/gems/*<CR><CR> 

To zawsze będzie używać katalogu gem w aktualnym zestawie rvm.

+0

Czy można tego użyć do generować tagi tylko dla najnowszej wersji każdego klejnotu? – Sathish

6

generycznej wersji do znakowania wszystkie zainstalowane perełki (to zajmuje trochę czasu):

map <silent><Leader>rt :!ctags --extra=+f --exclude=.git --exclude=log -R * `gem environment gemdir`/gems/*<CR><CR> 

Jeśli chcesz po prostu oznaczyć dołączonych perełki (znacznie szybciej):

map <silent> <Leader>rt :!bundle list --paths=true \| xargs ctags --extra=+f --exclude=.git --exclude=log -R *<CR><CR> 
3

Działa to dobrze dla mnie:

map <Leader>rt :!/usr/local/bin/ctags --language-force=ruby --exclude=.git --exclude=log -R * `bundle show --paths` 

Dodawanie --language-siła = rubin w celu zmniejszenia rozmiaru pliku, tagi i uczynienia go w czystości.

2

To właśnie używam:

ctags -R --exclude=.git --exclude=log * $(rvm gemdir)