Completamento della modalità di inserimento con Ctrl-n
Non so se potresti completare il WORD senza scrivere la tua funzione (come omnifunc). Tuttavia, se non ti dispiace espandere ciò che una parola corrisponde ai tuoi caratteri, puoi aggiungere questi caratteri a "iskeyword"
Ad esempio, per impostazione predefinita il mio "iskeyword" è
iskeyword=@,48-57,_,192-255
L'ho quindi impostato su quello più i caratteri aggiuntivi sopra
:set iskeyword=@,48-57,_,192-255,{,},,,(,),^
Questo aggiunge {
, }
, ,
, (
, )
, e ^
ai personaggi che compongono una parola (in aggiunta a quanto già fatto)
Successivamente, la digitazione viene {
Ctrl-ncompletata in {0,1}^n
(in un file contenente solo quei due esempi che hai fornito)
Nota: sarebbe meglio fare un :set iskeyword+=
solo con le cose aggiuntive, come segue:
:set iskeyword+={,},,,(,),^
In questo modo, lasci qualsiasi altra cosa componga già una parola chiave aggiungendo i nuovi caratteri all'impostazione esistente.
Espansione con abbreviazioni
Sebbene non faccia parte della domanda originale, un'altra funzionalità simile (ish) è quella di utilizzare la funzionalità di abbreviazione di nvi o Vim. A differenza del completamento delle parole chiave, le abbreviazioni non devono apparire come il testo finale. A differenza del completamento delle parole chiave, le abbreviazioni si espandono automaticamente, anziché solo quando le chiedi. A seconda dell'obiettivo e dell'utilizzo, questo può risparmiare molta digitazione e consente di digitare molto testo senza l'interruzione della richiesta di completamento.
Le abbreviazioni sono utili per un piccolo set di parole chiave e quando è possibile definirle in anticipo (non vengono scoperte dal testo come lo è il completamento delle parole).
L'idea di base dietro le abbreviazioni è che associ una WORD ad un altro testo e ogni volta che l'editor rileva che hai digitato quella WORD (ovvero, il testo digitato è circondato da uno spazio bianco, dove l'azione di completamento aggiunge lo spazio bianco dopo la parola chiave o lasciando la modalità di inserimento), viene sostituito con quell'altro testo.
Supponiamo che il tuo file contenga {0,1}^n
molto e che non ci siano altre varianti. Digitare è un po 'allungare le dita, quindi forse vuoi solo digitare 01n
o myvalue
e farlo espandere {0,1}^n
, ma solo quando 01n
o myvalue
è una parola a sé stante (cioè, se si presenta all'interno di un'altra parola, non cambiarlo).
In nvi, puoi farlo :abbrev 01n {0,1}^n
. Puoi fare lo stesso in Vim, ma ti consiglio di usare :iabbrev 01n {0,1}^n
per limitare l'espansione solo alla modalità di inserimento.
Quindi, se hai del testo (dove |
rappresenta il cursore)
We find that the value 01n|
E poi premi Esco Spaceo Tabo altrimenti sposti i cursori, il testo viene sostituito e hai (esempio per usare lo spazio)
We find that the value {0,1}^n |
e puoi continuare a digitare senza interruzioni.
Questo è di solito usato per correggere automaticamente errori di battitura comuni (ad esempio cambiando 'teh' in 'the') ma può essere ugualmente utile per il tuo caso d'uso, sempre supponendo che non ti dispiaccia impostare le mappature in anticipo.
:abbreviate
Invece potresti usare meglio . Ad esempio, emettere il:ab 01n {0,1}^n
comando. Quindi, ogni volta che digiti01n
come parola indipendente in modalità Inserisci, si espanderà a{0,1}^n
.