Completamento parola / codice in VIM
-
20-08-2019 - |
Domanda
So che posso ottenere il completamento delle parole tramite CTRL+N
& amp; CTRL+P
e completamento del codice tramite omnifunc con CTRL+X
CTRL+O
. Ho anche provato Supertab (molto carino) , perché sono abituato al completamento della TAB. Tutto ha funzionato bene. Mi piacerebbe vedere possibili corrispondenze mentre sto scrivendo, quindi ho anche provato autocomplpop. vim , la strega fa proprio questo.
Quello che mi piacerebbe realizzare, però, sarebbe una combinazione di entrambi insieme a una piccola svolta: mi piacerebbe vedere spuntare dei suggerimenti mentre scrivo (proprio come con autocompop
) ma quando uso TAB
la parola deve essere estesa solo alla corrispondenza più grande comune :
foo bar testor booze test baz teter
te<TAB>
Dopo aver digitato te
nella seconda riga, il popup dovrebbe suggerire test
, teter
e testor
.
Quando premo s
, non dovrebbe fare nulla, perché non esiste un terreno comune più di tes
. Dopo aver digitato un ulteriore te<TAB>
e premuto tes<TAB>
, dovrebbe espandersi test<TAB>
in <=> (perché è il terreno comune più piccolo) e in <=> dopo un secondo <=>.
Modifica : cerco di essere più chiaro ...
- <=>
- non dovrebbe fare nulla perché " noi " non so se una 't' (te t er) o una 's' (te s t, te s tor) dovrebbero Seguire.
- <=>
- dovrebbe espandersi in <=> (perché funziona per entrambi - test e testor - e teter non è più una corrispondenza possibile).
- <=>
- dovrebbe espandersi in <=> (solo possibile corrispondenza).
Bene, il popup dei suggerimenti è solo un bonus, ma mi piacerebbe davvero vedere il comportamento <=>. Spero di non arrivare a esoterico qui e puoi darmi una mano con alcuni trucchi di script o plugin per domare VIM per fare proprio questo.
Soluzione
:set completeopt=longest,menu,preview
forse?
(Non sono sicuro che la tua dichiarazione
" quando premo TAB, non dovrebbe fare nulla, perché non esiste un terreno più comune di te "
è in conflitto con la tua dichiarazione successiva
" al testatore dopo un 2 ° TAB. "
Mi sembra che non ci sia terreno più comune di " test " a quel punto ... A meno che tu non voglia dire che la prima scheda va al terreno comune più lungo, e quindi le schede successive passano attraverso le altre partite, nel qual caso stai cercando ciò che ho sopra ...)