Molti IDE completano automaticamente nomi di funzioni, variabili, nomi di metodi, ecc. mentre lutente digita. I migliori completano i nomi in base sia alla libreria incorporata nella lingua che a quanto è già stato definito in altri file dello stesso programma.
Ad esempio, mentre sto digitando quanto segue Programma Python:
hungy = True def eatFood(food): pass if hungry: eatF
la riga eatF
mostrerebbe automaticamente eatFood()
come opzione di completamento automatico disponibile.
Vim ha questa capacità? In tal caso, come posso abilitarlo?
Risposta
Ci sono molti diversi tipi di completamento automatico in vim. Un modo potrebbe essere utilizzare SuperTab . Ciò fornisce un modo per utilizzare il completamento tramite tabulazione più o meno in qualsiasi momento. Ciò ti consentirebbe di premere Tab dopo aver digitato parzialmente la parola per ottenere un elenco di completamento. Ad esempio, digitando eatF
seguito da Tab per espandere in eatFood.
Nota : tutte queste immagini rimandano a gif di esempio in azione.
Vim ha altre eccellenti opzioni. Dovresti leggere :h ins-completion
per vedere la varietà di opzioni di completamento integrate. Utilizzando vim “s Ctrl–X Ctrl – O , combinato con un plugin compatibile con python come jedi può dare un sapore di completamento. Jedi può essere configurato per fornire documentazione sullomni-completamento (questo è ciò che fa Ctrl–X Ctrl – O ). Quindi la documentazione per i candidati al completamento verrà visualizzata in una finestra divisa.
Lutilizzo di plug-in simili ma opzioni diverse porta a tutti i tipi di comportamenti. Ad esempio, è possibile non richiedere il completamento automatico (se questo è ciò che stai cercando). Invece, dopo aver digitato un certo numero di lettere (ad esempio 2 o 3) di una parola, un plugin può cerca di offrire in modo intelligente possibili completamenti in un menu.
Quindi la risposta breve è un sì! Ma il processo di configurazione può essere un po complicato. Lo considero un passo nella lunga scalinata verso la padronanza di vim.
Commenti
- Io ‘ li ho provati tutti e torno sempre a SuperTab, ‘ è il meno invadente.
- Mi piace molto anche il plug-in YouCompleteMe, in quanto suggerisce durante la digitazione e puoi scegliere o ignorare i suggerimenti. Sì, visivamente è difficile da ignorare, ma è molto poco invadente nel mio flusso di lavoro perché requi risulti meno battute.
- ‘ ho modificato le animazioni in ” al clic “, nel senso che sono collegati alle animazioni gif.
- Non posso ‘ utilizzare YouCompleteMe sul mio computer di lavoro perché don ‘ t avere root per installare le dipendenze, SuperTab è di gran lunga la scelta migliore successiva.
- @mixedmath Nel mio caso superTab non ‘ t funziona.
Answer
Tale funzionalità, ad esempio, la ricerca nel file corrente ( e tutti i file aperti) per il completamento automatico, dovrebbe essere abilitato per impostazione predefinita con Ctrl+P
:
Puoi andare al n suggerimento ext con Ctrl+N
, il p revious suggerimento con Ctrl+P
e selezionalo digitando una lettera qualsiasi (che verrà aggiunta subito dopo il suggerimento).
Commenti
Risposta
Vim supporta il completamento in modo nativo . Puoi leggere i vari diversi completamenti supportati da Vim su :h ins-completion
.
In generale, per tutti gli scopi che ho trovato, gli ins-completamenti sono sufficienti per i miei gusti , tuttavia ci sono alcuni plugin di completamento che aggiungono più valore oltre a quello che offre i completamenti. NeoComplete , YCM (YouCompleteMe) sono alcuni per lo stesso. Sono più avanzati nel senso che cercano di combinare diversi tipi di completamenti in modo più accurato e hanno anche meccanismi avanzati di memorizzazione nella cache, quindi tendono ad essere più veloci. YCM riesce persino a lavorare con compilatori / utilità esterni per fornire un migliore IntelliSense.
Answer
Sì, script di completamento automatico per vim esistono. La scelta “migliore” dipende dal tuo linguaggio di programmazione. Poiché il tuo codice di esempio è Python, ti suggerisco di dare unocchiata a Jedi . Costruisci sulla base di questo You complete me , che supporta anche altre lingue, ma a volte è visto come troppo grande. Per altre lingue puoi sfogliare il set lungo in script vim .
Risposta
In modalità di inserimento, digita i primi due caratteri di una parola, quindi premi:
Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word.
Ciò è particolarmente utile quando inserisci nomi di variabili in un programma.
Lopzione “complete” controlla dove vengono cercate le parole chiave (include file, file di tag, buffer e altro).
Lopzione “completeopt” controlla come avviene il completamento (ad esempio, se viene visualizzato un menu).
^P
è più naturale IMHO. Altrimenti grazie per la modifica (spero di aver cliccato sul pulsante giusto e hai ottenuto il tuo +2).world,word,wood
e non viceversa).Quindi^P
è lultimo completamento utilizzato, il che è molto utile (raramente vado oltre 3 elementi nellelenco, anche in un file lungo).inoremap <C-Space> <C-N>