<C-p>
und <C-n>
ermöglichen die Vervollständigung von Wörtern im aktuellen Dokument.
Ich mache ein paar Notizen und schreibe sagen {0,1}^n
und (E,D)
oft. Dies sind WÖRTER, die aus mehreren Wörtern bestehen.
Gibt es eine Möglichkeit, WORDs mit <C-p>
und <C-n>
(oder einem anderen verwandten ins-completion
Befehl) zu vervollständigen ?
autocompletion
Gonçalo Ribeiro
quelle
quelle
:abbreviate
. Geben Sie beispielsweise den:ab 01n {0,1}^n
Befehl aus. Jedes Mal, wenn Sie01n
im Einfügemodus ein unabhängiges Wort eingeben, wird es auf erweitert{0,1}^n
.ins-completion
.Antworten:
Einfügemodus abschließen mit Ctrl-n
Ich weiß nicht, ob Sie eine WORD-Vervollständigung durchführen können, ohne Ihre eigene Funktion (wie Omnifunc) zu schreiben. Wenn es Ihnen jedoch nichts ausmacht, ein Wort zu erweitern, das Ihren Zeichen entspricht, können Sie diese Zeichen zu "iskeyword" hinzufügen.
Zum Beispiel lautet mein 'iskeyword' standardmäßig
Ich habe es dann auf das plus die zusätzlichen Zeichen oben gesetzt
Dies fügt
{
,}
,,
,(
,)
, und^
auf die Zeichen , die ein Wort bilden (zusätzlich zu dem, was bereits getan hat)Danach wird die Eingabe
{
Ctrl-nzu{0,1}^n
(in einer Datei, die nur die beiden Beispiele enthält, die Sie angegeben haben) abgeschlossen.Hinweis: Es wäre besser,
:set iskeyword+=
nur die zusätzlichen Dinge wie folgt zu tun :Auf diese Weise belassen Sie alle anderen Elemente, die ein Schlüsselwort ausmachen, indem Sie die neuen Zeichen an die vorhandene Einstellung anhängen.
Erweiterung mit Abkürzungen
Obwohl dies nicht Teil der ursprünglichen Frage ist, besteht eine andere ähnliche (ish) Funktionalität darin, die Abkürzungsfunktionalität von nvi oder Vim zu verwenden. Im Gegensatz zur Vervollständigung von Schlüsselwörtern müssen Abkürzungen nicht wie der endgültige Text aussehen. Anders als bei der Vervollständigung von Schlüsselwörtern werden Abkürzungen automatisch erweitert, anstatt nur, wenn Sie danach fragen. Abhängig von Ihrem Ziel und Ihrer Verwendung kann dies viel Tipparbeit einsparen und Sie können viel Text eingeben, ohne dass Sie unterbrochen werden müssen, um eine Vervollständigung anzufordern.
Abkürzungen eignen sich für eine kleine Anzahl von Schlüsselwörtern und wenn Sie sie im Voraus definieren können (sie werden nicht aus Ihrem Text erkannt, wie es die Wortvervollständigung ist).
Die Grundidee hinter Abkürzungen ist, dass Sie ein WORD mit einem anderen Text verknüpfen und jedes Mal, wenn der Editor feststellt, dass Sie dieses WORD eingegeben haben (dh, der von Ihnen eingegebene Text ist von einem Leerraum umgeben, in dem die Abschlussaktion das Leerzeichen nach dem Text hinzufügt) Wenn Sie das Schlüsselwort eingeben oder den Einfügemodus verlassen, wird es durch den anderen Text ersetzt.
Angenommen, Ihre Datei enthält
{0,1}^n
viel, und es gibt keine anderen Variationen davon. Typing , die ein bisschen von einem Finger Strecke ist, so vielleicht wollen Sie nur eingeben01n
odermyvalue
und haben sie zu erweitern{0,1}^n
, aber nur , wenn01n
odermyvalue
ist ein Wort auf seine eigene (das heißt, wenn es in einem anderen Wort erscheinen geschieht, nicht ändern Sie es).In nvi ist das möglich
:abbrev 01n {0,1}^n
. Sie können dasselbe in Vim tun, ich empfehle:iabbrev 01n {0,1}^n
jedoch, die Erweiterung auf den Einfügemodus zu beschränken.Dann, wenn Sie etwas Text haben (wo
|
steht der Cursor)Und dann drückst du Escoder Spaceoder Taboder bewegst auf andere Weise die Cursor, der Text wird ersetzt und du hast (Beispiel für die Verwendung von Leerzeichen)
und Sie können ohne Unterbrechung weiter tippen.
Dies wird normalerweise verwendet, um häufig vorkommende Tippfehler automatisch zu korrigieren (z. B. 'teh' in 'the' ändern), kann aber auch für Ihren Anwendungsfall nützlich sein, vorausgesetzt, es macht Ihnen nichts aus, die Zuordnungen im Voraus einzurichten.
quelle
:set iskeyword+={,},,,(,),^
wie erwartet zu funktionieren.abbreviate
sich dieser Job besser eignet?