In Vim (7.2) gibt es einen normalen Modusbefehl r
, um ein einzelnes Zeichen durch ein anderes zu ersetzen. Wenn Sie beispielsweise eingeben, rX
wird das eine Zeichen unter dem Cursor durch ersetzt, X
und Sie kehren zum normalen Modus zurück.
Gibt es einen Normalmodus-Befehl, um ein einzelnes Zeichen einzufügen und dann in den Normalmodus zurückzukehren?
Antworten:
MelBurslan hat Recht, dass diese Funktion nicht von Haus aus vorhanden ist, aber das Erstellen eines benutzerdefinierten Befehls ist nicht der richtige Weg, um sie zu erstellen. Ich habe ein paar Minuten gebastelt und mir das einfallen lassen:
Wobei einige Vim-Tricks verwendet werden, bei denen Text aus einem Register "abgelegt" wird, in diesem Fall das Register "Ausdruck". Der Ausdruck, der in das Register eingefügt wird, lautet "
nr2char(getchar())
" und gibt eine einzelne Zeichenfolge zurück.Der Grund, warum ich das Mapping auf diese Weise erstellt habe, ist, dass es schwierig ist, Benutzereingaben "auf halbem Weg" durch ein Mapping zu bekommen, und sich unvorhersehbar verhalten kann. Selbst diese Zuordnung lässt den Cursor in den Statusbereich fallen, während der Benutzer auf die Eingabe eines Zeichens wartet.
quelle
Vielen Dank an Johnny, der uns diese großartige Antwort in den Kommentaren unten gegeben hat:
Das ordnet Control + i zu, um ein einzelnes Zeichen einzufügen, und es tut es sehr kurz.
In Ihrer vimrc-Datei sieht dies folgendermaßen aus:
Ich habe meine Zuordnung geändert, um Speicherplatz zu verwenden, und Sie können Ihren zu Ihren bevorzugten Schlüsseln ändern:
quelle
Soweit ich weiß, gibt es in keiner weit verbreiteten Version von vi editor eine solche Funktion, aber vim verfügt über eine Möglichkeit, benutzerdefinierte Befehle zu erstellen. Es wurde zuvor hier diskutiert: in diesem Thread
Möglicherweise können Sie Ihren benutzerdefinierten Befehl nach Ihren Wünschen erstellen.
quelle
Eine einfache Möglichkeit hierfür ist die Verwendung der Befehle Ausschneiden xund Einfügen p. Angenommen, dies
*
ist das Zeichen, das Sie einfügen möchten. Fügen Sie es mit ein i * Esc. Dann drück x. Das wird den Charakter schneiden. Jetzt können Sie drücken p, um das einzelne Zeichen zu setzen. Wenn Sie dieses Zeichen 300 mal einfügen müssen, können Sie Folgendes eingeben:300p
.quelle