Ins-completamento delle PAROLE


13

<C-p>e <C-n>consentire il completamento delle parole trovate nel documento corrente.

Sto prendendo appunti e scrivendo dire {0,1}^ne (E,D)molte volte. Queste sono PAROLE costituite da più parole.

C'è un modo per completare le PAROLE con <C-p>e <C-n>(o altri ins-completioncomandi correlati )?


1
:abbreviateInvece potresti usare meglio . Ad esempio, emettere il :ab 01n {0,1}^ncomando. Quindi, ogni volta che digiti 01ncome parola indipendente in modalità Inserisci, si espanderà a {0,1}^n.
200_successo

@ 200_success, grazie. Avevo pensato alle abbreviazioni, ma volevo ancora sapere se fosse possibile ins-completion.
Gonçalo Ribeiro,

Risposte:


5

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}^nmolto e che non ci siano altre varianti. Digitare è un po 'allungare le dita, quindi forse vuoi solo digitare 01no myvaluee farlo espandere {0,1}^n, ma solo quando 01no 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}^nper 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.


A me sembra che :set iskeyword+={,},,,(,),^funzioni come previsto.
Karl Yngve Lervåg,

1
Anzi lo fa. Quando l'ho provato l'ultima volta, Vim continuava a dirmi che si trattava di un errore di sintassi. Deve essere stato altrove. Aggiornamento della mia risposta.
John O'M.

@ JohnO'M. potresti aggiungere un riferimento su come abbreviatepotrebbe essere più adatto per questo lavoro?
Gonçalo Ribeiro,

@GonçaloRibeiro fatto. Spero possa essere d'aiuto.
John O'M.
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.