Manchmal, wenn Sie einen Befehl im normalen Modus 10dk
eingeben, können Sie einen Tippfehler machen. Wenn ich beispielsweise beabsichtige zu tippen , kann ich versehentlich mit dem Tippen beginnen 19d
.
Ist es möglich, die falschen Schlüssel über die Rücktaste zu löschen 19d<backspace><backspace>0dk
, anstatt den Befehl zu drücken und erneut zu wiederholen , da der Befehl noch nicht abgeschlossen / festgeschrieben wurde ?
Nebenfrage: Gibt es einen Vim-Begriff für die Datenstruktur, der den aktuellen Befehl enthält, bevor er festgeschrieben wird?
vimrc
normal-mode
command-history
HellaMad
quelle
quelle
Antworten:
Es gibt keine Möglichkeit, dies zu tun, und es ist normal, dass dies nicht der Fall ist: Befehle im normalen Modus sind im Allgemeinen ziemlich kurz und können abgebrochen werden, Escwenn Sie es durcheinander bringen.
Eine mögliche Problemumgehung wäre die Verwendung des
:normal
Befehls. Dies verlängert den Vorgang, aber wenn Sie beispielsweise:normal 10j
die Befehlszeile eingeben, wird Vim so ausgeführt,10j
als hätten Sie ihn im normalen Modus eingegeben. (Siehe:h :normal
)Sie können diese Zeilen auch zu Ihrem hinzufügen
.vimrc
:Sie erstellen ein Mapping (hier F4aber verwenden Sie, was Sie wollen), das die Funktion aufruft
NormalModeCommand()
.Mit dieser Funktion können Sie eine Zeichenfolge in die Befehlszeile eingeben und dann die Zeichenfolge ausführen, die Sie als Befehl für den normalen Modus eingegeben haben. Während Sie die Zeichenfolge in die Befehlszeile eingeben, können Sie sie wie jeden anderen Befehl korrigieren. Natürlich ist es nicht ideal, aber auch hier ist Vim nicht dazu gedacht.
quelle