2013-03-30 17 views
5

Wszystko,Lepsze autouzupełniania w VIM

pracuję z vim od jakiegoś czasu, i kocham w nim wszystko - istnieje tylko jedna rzecz naprawdę tęsknię od IDE jak rubymine, a to zaawansowany autocompletion.

Dla porównania, tutaj jest mój standardowy setup VIM: https://github.com/wrwright/.vim

Próbowałem ctags z omnicomplete + supertab, a jednym z głównych elementów Tęsknię jest możliwość wychować wrażliwe listy kontekstowe atrybuty/stałe/metody. Na przykład, gdy uczę się RubyMotion, chciałbym mieć trochę pomocy z zapamiętywaniem stałych/atrybutów/metod iOS SDK, ale moje autouzupełnianie VIM zatrzymuje się z sugerowaniem nazw klas .. lub jeśli sugeruje metody/atrybuty, wyszczególnia tonę metody/atrybuty, które nie odnoszą się nawet do klasy, z którą pracuję.

Chciałbym (prosty przykład) być w stanie wpisać UIColor.bl i mieć go uzupełni z UIColor.blueColor (lub sugerować jeśli istnieje wiele opcji, które zaczynają się od „bl”, które mają właściwości UIColor.

rubymine robi to bardzo dobrze, a jeśli mogę VIM być podobnie mądry z autouzupełniania byłoby rajskie (i wielkim dobrodziejstwem podczas nauki RubyMotion/iOS Rozwoju.

próbowałem również SnipMate (a nawet RubyMotion dostosowane odmiany w https://github.com/rcyrus/snipmate-snippets-rubymotion), ale nie wydaje się, że oferuje funkcje, których szukam.

+0

Przed wysłaniem opinii opublikowałem podobne pytanie. Skończyło się na tym, że rozwinąłem vim-ruby i sprawiłem, że pokazywał on sygnatury metod (czego najbardziej mi brakowało w RubyMine). http://stackoverflow.com/a/26970258/226255 – Abdo

Odpowiedz

5

Stosunkowo zadowolony z Zdjęcie Vima omnicomplete + vim-ruby i vim-rails posiadające zdolności zaliczenie na równi z NetBeans, ale ze wszystkimi dzwonami & gwizdki Vima i znacznie niższe wymagania dotyczące zasobów, oczywiście.

Z moich .vimrc dotyczących możliwości realizacji:

autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1 
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1 
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1 
+0

Podobał mi się podobnie, odkąd to opublikowałeś i dzięki. Mam jednak na moim radarze możliwość wypróbowania [youcompleteme] (https://github.com/Valloric/YouCompleteMe), jednak w pewnym momencie. –

-3

Tak, Vim jest niesamowitym ... edytorem tekstu.

Jako takie nie można oczekiwać, że będzie pasowało do "świadomości kodu" dowolnego IDE. Co więcej, całkowicie polega na społeczności, która zapewnia więcej niż domyślne wsparcie dla danego języka. Gdyby google lub strona rubymotion nie pomogły ci znaleźć poważnego rozwiązania "autouzupełniania", wątpię, żebyś znalazł to tutaj.

Proces wyjaśniony w poniższym wpisie na blogu brzmi dobrze, jeśli nie jest bardzo precyzyjny na początku konfiguracji vima.

http://rayhightower.com/blog/2013/02/12/automatic-ctags-with-rubymotion-and-vim/

+0

Doceniam odpowiedź i link, romainl. –

+0

Dlaczego ta odpowiedź została odrzucona? – geoffharcourt

1

Jedną rzeczą, że miałem trochę szczęścia z Rubymotion jest YouCompleteMe i umożliwienie tag Support. będziesz potrzebował dużo pamięci RAM (YCM używa ~ 2 GB podczas indeksowania dużego pliku znacznika), ponieważ znaczniki używane przez rubymotion to około 40k.

Minusem jest to, że ludzie rubymotion wydają się nie chcą dokonywać przeglądu zgłoszeń ciągnięcia i dostarczenie wszelkich informacji zwrotnej, więc nie jestem pewien, czy będą one dodać potrzebne rzeczy do zadania nachylenia, który tworzy pliki znacznik do ycm do pracy poprawnie po wyjęciu z pudełka.

Aby zmusić go do pracy trzeba ustawić znaczniki plików skorygować

set tags=./tags;,tags;

a następnie trzeba konfiguracji ycm aby zakończyć off tagi.

let g:ycm_collect_identifiers_from_tags_files = 1

trzeba uczynić ctags plik zgodny z ycm również. To żądanie ściągnięcia robi to. Musisz dodać pole języka do kreacji ctags, a następnie zmienić bridgesupport na ruby.

pull request for that

potem trzeba uruchomić ctags prowizji w katalogu głównym projektu.

Jeśli nie chcesz modyfikować pliku project.rb, prawdopodobnie możesz utworzyć własne zlecenie rake, które ma prawie to samo.