Completamento automatico in Vim


258

Dopo un lungo "allenamento", sono finalmente passato a Vim; ma ho qualche problema con il completamento automatico. Come posso avere un suggerimento sul codice mentre sto scrivendo?

Di solito sviluppo PHP, Ruby, HTML, C e CSS.

Risposte:


144

È possibile utilizzare un plug-in come AutoComplPop per ottenere il completamento automatico del codice durante la digitazione.

Modifica 2015: uso personalmente YouCompleteMe ora.


10
Questo è altamente raccomandato. Elimina lo sforzo di digitare CX CO, CP o CN.
Amjith

Ci ho provato ma sembra che non funzioni .. Probabilmente c'è un conflitto con altri script ..
diegocstn

1
stai mettendo i file nelle directory specificate in ~ / .vim?
michaelmichael,

1
@dieguitoweb ACP non funziona con tutti i tipi di file per impostazione predefinita. Devi "hackerarlo" per farlo funzionare con JavaScript, ActionScript e PHP. Qui spiego come lo faccio. Ed ecco un altro suggerimento per PHP.
rom

ora funziona :) tutti i file erano già nelle directory giuste .. Ho sostituito lo script solo con un nuovo download dal repository git e ora va bene. molte grazie
diegocstn il

438

Usa Ctrl- Nper ottenere un elenco di suggerimenti di parole in modalità inserimento. Digitare :help i_CTRL-Nper vedere la documentazione di Vim su questa funzionalità.

Ecco un esempio di importazione del dizionario Python in Vim.


15
grazie è fantastico, ma come posso avere questo elenco in automatico senza premere <ctrl + N>?
Diegocstn,

5
Questo è ciò che michaelmichael ti stava dicendo con il plugin che ha menzionato. Inoltre, potresti guardare SuperTab.
projecktzero,

4
Per il supporto CSS, aggiungi il trattino per il completamento automatico incorporato aggiungendo 'set iskeyword + = -' al tuo .vimrc
mahalie

3
Questo è il modo più completo e nativo di farlo :-)
Srikant,

5
@ Hi-Angel la parte 'auto' è che determina automaticamente le opzioni per il completamento di una parola e compete automaticamente la parola alla selezione di un'opzione.
CJBS,


11

Puoi iniziare dall'impostazione integrata omnifunc.

Metti solo:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

nella parte inferiore del tuo .vimrc, quindi digitare <Ctrl-X><Ctrl-O>in modalità di inserimento.

Mi affido sempre a questo completamento CSS.


cosa setlsignifica? Grazie.
qed

Ok, ho capito, significa setlocal. Ma perché abbiamo bisogno di setlocal qui?
qed

Dai un'occhiata a come ti dà fastidio quando apri un altro file nello stesso buffer.
Ernix,

2
@ernix Dal tuo link: un buffer in Vim è ... un'istanza aperta di un file ... Conosco buffer, finestre e schede; ma non so come aprire un altro file nello stesso buffer. Mi sembra che quando si apre un file si aprirà sempre in un nuovo buffer e aggiungerà quel buffer all'elenco dei buffer. So che ci sono altri modi in cui vengono utilizzati i buffer, come l'elenco delle soluzioni rapide, ma non sapevo come modificare il file in un buffer. :h buffersdice: Un buffer è un file caricato in memoria per la modifica. Detto questo, sto usando seriamente Vim solo per 3 mesi. e sono certamente aperto alla correzione.
JakeD,

1
@JakeD Ah sì. Hai ragione. Ho preso "istanza" nel senso sbagliato. Ho capito male che stavi parlando di processi con PID diversi. Scusa, dimentica solo quello che ho detto.
Ernix,


6

Recentemente ho scoperto un progetto chiamato OniVim , che è un front-end basato su elettroni per NeoVim che viene fornito con un bel completamento automatico per diverse lingue fuori dalla scatola, e dal momento che è fondamentalmente solo un involucro attorno a NeoVim, hai la piena potenza di vim a vostra disposizione se la GUI non soddisfa le vostre esigenze. È ancora in fase di sviluppo iniziale, ma sta rapidamente migliorando e c'è una comunità molto attiva attorno ad esso. Uso vim da oltre 10 anni e ho iniziato a fare un giro di prova a Oni alcune settimane fa, e mentre ha alcuni bug qua e là non mi ha ostacolato. Lo consiglio vivamente ai nuovi utenti di VIM che stanno ancora ricevendo le dita di VIM!

inserisci qui la descrizione dell'immagine

OniVim: https://www.onivim.io/


32
per me l'intero punto di vim sta usando il terminale ... se volessi usare un'app per elettroni userò semplicemente vscode con un'estensione vim ..
Mohamed Benkedadra

2
@MohamedBenkedadra Ma ti darebbe davvero il pieno potere di Vim? Mi capita di essere un grande fan del suo sistema di schemi di ricerca e sostituzione, per prima cosa, e sarei piacevolmente sorpreso se un plug-in di emulazione vim lo supportasse.
SilverWolf - Ripristina Monica il

3

Ho usato la neocomplcache per circa sei mesi. È un plug-in che raccoglie una cache di parole in tutti i tuoi buffer e quindi li fornisce per il completamento automatico.

C'è una serie di schermate nella pagina del progetto nel link precedente. Neocomplcache ha anche moltissime opzioni di configurazione, di cui ci sono anche esempi di base sulla pagina del progetto.

Se hai bisogno di maggiore profondità, puoi guardare la sezione pertinente nel mio vimrc - cerca solo la parola neocomplcache.


1

Ecco il link ! per PHP.

premi Ctrl + x seguito dai tasti Ctrl + o mentre scrivi alcune funzioni PHP.

Grazie a Oseems Solutions per il tutorial


1

Se desideri solo il completamento automatico dalla cache dei tuoi buffer correnti, supertab è più facile da installare rispetto al neocomplete , può funzionare su Mac preinstallato vim out-of-box senza la necessità di MacVim.

Puoi controllare altre alternative su vim awesome .


0

Per PHP, Padawan con Deoplete è un'ottima soluzione per avere un solido completamento automatico di PHP in Neovim. Ho provato molte cose e Padawan funziona come un incantesimo!

Per Vim puoi usare Neocomplete invece di Deoplete.

Ho scritto un articolo su come creare un IDE PHP Vim se qualcuno è interessato. Ovviamente Padawan ne fa parte.


0

Un'altra opzione è coc.nvim .

È davvero veloce e il completamento è eccezionale in quanto utilizza intellisense lo stesso completamento automatico di VScode. Ha anche capacità di pelucchi. Quindi ti mostra dove potresti avere un bug. Supporta una moltitudine di lingue.

Potrebbe richiedere un po 'di installazione e configurazione, ma penso che sia il miglior motore di completamento automatico per vim là fuori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.