In questo momento sto giocando con i completamenti automatici in vim e mi sono risolto su supertab per gestire i miei completamenti. Anche se sta funzionando molto bene e (penso) esattamente come è stato progettato, mi piacerebbe sapere come cambiare qualcosa.Come annullare in modo efficiente un completamento automatico in vim
In primo luogo, sto correndo 7.3.429 su Ubuntu 12.04LTS con
set completeopt=menuone,preview,longest
in modo da avere bash-tipo il completamento automatico con supertab, e di default completo.
Supponiamo Ho il seguente nel mio file:
aaabbbcccddd
aaabbccddeef
aaabbcddeeff
Se digito aa
e ha colpito Tab, quindi vim si rese conto che aaabb
è la stringa più lunga comune tra le partite, quindi inserisce aaabb
e visualizza un menu contenente le tre opzioni. Se volessi davvero una di quelle opzioni, allora tutto va bene. Ma forse volevo davvero il aaaaazzzzz
, ma non mi ero reso conto di non averlo ancora digitato.
C'è un buon modo per dire a vim: "Oh, mi dispiace, non volevo finire il conto alla rovescia, per favore, fai finta di non averlo fatto".
In questo momento, le opzioni evidente per me sono:
- Hit Tab o Maiusc +Tab abbastanza volte per tornare alla mia iniziale. Ma se ci sono molte parole simili, specialmente fino a lunghezze diverse, questo è fastidioso.
- Colpire backspace tuttavia molte volte necessario, o qualche altra cancellazione ingenua. Ma questi sono sicuramente tratti chiave inutili.
- Hit Esc + u ottenere un annullamento, ma questo annulla la mia intera parola (o più se ho digitato rapidamente). Questo è assolutamente inaccettabile. E dopo, devo inserire nuovamente la modalità di inserimento e ridigitare. Schifoso.
- Hit Ctrl + U per annullare senza lasciare la modalità di inserimento. Ma questo ha anche la tendenza a rimuovere troppo.
- Hit Ctrl + W per eliminare l'ultima parola. Mentre riesco a farlo senza uscire dalla modalità di inserimento, devo ancora ridigitare. Questo è il migliore che ho trovato finora.
Se non avessi longest
abilitato, quindi ho potuto utilizzare Ctrl +E, che si chiude il menu senza inserire qualsiasi altra cosa. Ma da quando è attivo più a lungo, interrompe il completamento automatico ma lascia la corrispondenza comune più lunga inserita.
Sicuramente ci deve essere un modo migliore per farlo.
Grazie. Non ho provato. Ma lo ammetto, sono confuso. Leggendo la documentazione, non interpreto affatto la "corrispondenza corrente" come il testo pre-longestamente inserito e pre-inserito. Soprattutto quando sembra indicare che dovrebbe essere quello che annulla il completamento. Sto leggendo la documentazione molto male? –
mixedmath
Capisco perché sei confuso riguardo a '' tuttavia devi leggere solo un po 'oltre: fine completamento, torna a ciò che era lì prima di selezionare una corrispondenza (cosa era stata digitata o la più lunga stringa comune). –