2013-03-30 15 views
5

Tutti,Meglio di completamento automatico in VIM

ho lavorato con vim per qualche tempo, e l'amore tutto su di esso - c'è solo una cosa che mi manca da IDE come RubyMine, e che è il completamento automatico avanzato.

Per riferimento, ecco la mia messa a punto VIM di serie: https://github.com/wrwright/.vim

ho cercato ctags con omnicomplete + supertab, e l'elemento principale quello che mi manca è la capacità di far apparire un contesto di lista sensibile attributi/costanti/metodi. Ad esempio, mentre imparo RubyMotion, mi piacerebbe avere un po 'di aiuto nel ricordare costanti/attributi/metodi iOS SDK, ma il completamento automatico del VIM si interrompe con il suggerimento dei nomi di classe .. o se suggerisce metodi/attributi, elenca una tonnellata di metodi/attributi che non si applicano nemmeno alla classe con cui sto lavorando.

mi piacerebbe (semplice esempio) in grado di digitare UIColor.bl e farlo completamento automatico con UIColor.blueColor (o suggerire se ci sono più opzioni che iniziano con "bl" che sono di proprietà dei UIColor.

RubyMine fa molto bene, e se posso ottenere VIM di essere allo stesso modo intelligente con funzione di completamento automatico che sarebbe stato celeste (e un grande vantaggio, mentre l'apprendimento RubyMotion/iOS sviluppo.

ho anche provato SnipMate (e anche un RubyMotion variazione su misura a https://github.com/rcyrus/snipmate-snippets-rubymotion), ma questo non sembra offrire le funzionalità che sto cercando.

+0

Avevo postato una domanda simile prima di vedere la tua. Alla fine ho biforcato vim-ruby e ho fatto vedere le firme dei metodi (che è quello che mi è mancato di più da RubyMine). http://stackoverflow.com/a/26970258/226255 – Abdo

risposta

5

relativamente soddisfatto omnicomplete azioni di Vim + vim-ruby e vim-rails con capacità di completamento alla pari con NetBeans, ma con tutte le campane & fischietti di Vim e fabbisogno di risorse molto più bassi, naturalmente.

Dalle mie Vimrc riguardanti opzioni di completamento:

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

Sono stato in esecuzione in modo simile da quando hai postato questo, e grazie. Ho il mio radar per provare [youcompleteme] (https://github.com/Valloric/YouCompleteMe), tuttavia, ad un certo punto. –

-3

Sì, Vim è un fantastico ... editor di testi.

Come tale, non ci si può aspettare che corrisponda alla "consapevolezza del codice" di qualsiasi IDE. Inoltre, si affida completamente alla comunità per fornire supporto più che predefinito per una determinata lingua. Se Google o il sito di rubymotion non ti hanno aiutato a trovare una seria soluzione di "autocompletamento" dubito che la troverai qui.

Il processo spiegato nel post del blog qui sotto sembra ok, se non molto preciso sul fronte di configurazione di vim.

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

+0

Apprezzo la risposta e il collegamento, romainl. –

+0

Perché questa risposta è stata respinta? – geoffharcourt

1

Una cosa che ho avuto un po 'di fortuna con Rubymotion è YouCompleteMe e consentendo tag supporto. avrete bisogno di un sacco di ram (YCM usa ~ 2 GB quando indicizzate un file di tag di grandi dimensioni) perché i tag utilizzati da rubymotion sono circa 40k tag.

Il rovescio della medaglia è che le persone rubymotion non sembrano voler rivedere le richieste di trazione e di fornire tutte le risposte in modo da non sono sicuro se ne aggiungeranno le cose necessarie per il compito rake che crea i file di tag per YCM al lavoro correttamente fuori dalla scatola.

Per farlo funzionare è necessario impostare i tag file corretti

set tags=./tags;,tags;

e quindi è necessario impostare YCM per completare off tag.

let g:ycm_collect_identifiers_from_tags_files = 1

è necessario per rendere il file ctags compatibile con YCM pure. Questa richiesta di pull lo fa. È necessario aggiungere un campo lingua alla creazione di ctags e quindi cambiare bridgesupport in ruby.

pull request for that

dopo che è necessario eseguire ctags rastrello nella root del vostro progetto.

Se non si desidera modificare il file project.rb, è probabile che si possa creare la propria attività rake che fa praticamente la stessa cosa.