Eine ziemlich ärgerliche Funktion von vim ist, dass wenn Sie sich im Einfügemodus befinden und eine automatische Vervollständigung durchführen (Strg-N), die Pfeiltaste nach unten zum gewünschten Element drücken und dann das Element einfügen, aber auch eine neue Zeile einfügen, die Sie einfügen dann muss löschen.
Gibt es eine Möglichkeit, ein Element aus der Autocomplete-Liste auszuwählen, ohne eine zusätzliche unerwünschte Zeile zu erhalten?
vim
autocomplete
Tyler Durden
quelle
quelle
Antworten:
Es hängt davon ab, in welchem Popup-Menü-Status Sie sich befinden (siehe
:help popupmenu-completion
). Ich verstehe aus Ihrer Frage, dass Sie sich in Zustand 2 befinden (da Sie die Pfeiltasten gedrückt haben, um eine Vervollständigung zu finden). Das Standardverhalten für Enterin Status 2 besteht jedoch darin, die Vervollständigung ohne Zeilenvorschub einzufügen. was Sie beschreiben, ist normalerweise das Verhalten von Zustand 1 (das ist, wenn Sie Ctrl+ N/ Ctrl+ verwenden P.)Eine Möglichkeit, die in allen Status konsistent funktioniert, ist die Verwendung von Ctrl+ Y. Ich erinnere mich gerne an das Y, das für "Ja, akzeptiere dieses Wort" steht. Es ist auch möglich, einfach mit der Eingabe des Texts zu beginnen, der nach dem vollständigen Wort kommen soll, es sei denn, Sie haben die Dinge wie in der Antwort von geedoubleya neu zugeordnet.
Im selben Kontext können Sie Ctrl+ drücken E, um das Menü abzubrechen und Ihren Text so zu belassen, wie er war, bevor Sie ihn aufgerufen haben. Wenn Sie an die Paarung von Ctrl+ Eund Ctrl+ Yin anderen Kontexten gewöhnt sind (z. B. um im normalen Modus nach oben oder unten zu scrollen oder um im Einfügemodus das Zeichen unter oder über dem Cursor einzufügen), können Sie sich dies hier merken. Sie können es sich auch als "Verlassen" des Menüs oder ähnliches vorstellen.
Sehen Sie
:help popupmenu-keys
für mehr.quelle
Persönlich benutze ich dieses:
Jeder, der das CtrlP-Plugin verwendet, findet diese Zuordnung möglicherweise praktisch.
quelle
Ich weiß, dass dies alt ist, aber eine Art Huckepack auf Geedoubleyas Antwort, denn obwohl Echristophersons Antwort informativ und fantastisch war, wenn jemand eine schnelle und schmutzige Lösung will:
quelle
Alternativ zu den Pfeiltasten können Sie mit den Tasten
j
&k
durch die Autovervollständigungsliste scrollen.Auf diese Weise wird die aktuelle Zeile so geändert, dass sie beim Blättern dem ausgewählten Wort entspricht.
Daher müssen Sie die Eingabetaste nicht drücken, da sich der Cursor am Ende des ersetzten Wortes noch im Einfügemodus befindet.
Um dies zu aktivieren, füge dies zu deiner .vimrc hinzu (Danke an andere bei stackoverflow):
Anstatt die Pfeiltasten zu verwenden, können Sie auch einfach wiederholen,
Ctrl-n
was durch die Optionen fließt (Ctrl-p
um rückwärts zu gehen), und die aktuelle Zeile ersetzen, während sie sich bewegtEnter
.quelle