Was ist die schnellste Sequenz, die bis zum Zeilenende nach der Cursorposition gelöscht werden kann ?
Beispiel:
Ich möchte diese Zeile schneller löschen
Sequenz: 5eD
Löscht das letzte Zeichen des Wortesline
Ich möchte dieses Lin löschen
Wenn ich mich mit vim bewege, werde ich häufig auf das erste oder letzte Zeichen eines Wortes gesetzt, sodass ich mich jedes Mal, wenn ich bis zum Zeilenende löschen möchte, um einen weiteren Tastendruck bewegen muss (im obigen Beispiel durch Hinzufügen einer Bewegung rechts): 5elD
). Gibt es einen effizienteren Weg (durch Bewegen nach dem Ende des Wortes oder durch Löschen nach dem Cursor)?
cursor-motions
Pierre-Jean
quelle
quelle
6wD
hinterlässt nach dem letzten Wort ein Leerzeichen, aber zumindest der sichtbare Text ist so, wie Sie es möchten.6wDx
beendet den Job, aber dann sind Sie wieder bei vier Tastenanschlägen.Antworten:
D
ist ein Inklusivbefehl , der eine Bewegung bearbeitet, die den Cursor an einem Ende und das letzte druckbare Zeichen in der Zeile am anderen Ende enthält. Es gibt keine integrierte Möglichkeit von AFAIK, einen Inklusivbefehl in einen Exklusivbefehl umzuwandeln und umgekehrt.Die schwerste Lösung wäre, eigene Operatoren und Bewegungen / Textobjekte zu definieren.
Eine etwas leichtere Lösung wäre, Zuordnungen für diese Eckfälle zu definieren.
Eine noch leichtere - aber langweilige - Lösung wäre, ein paar weitere Tastenanschläge im visuellen Modus auszuführen.
Oder Sie können sich einfach etwas "agiler" bewegen :
quelle
Es gibt mehrere Möglichkeiten, um das zu erreichen, was Sie wollen:
All dies kostet Sie nur +1 Tastendruck.
Wenn das Löschen ab der aktuellen Position +1 möglich war, ist es sinnvoll, auch nach dem Löschen von der aktuellen Position -1 zu fragen. Dies würde auch die Frage nach anderen Befehlen aufwerfen, z. B. Löschen bis zum Ende der Datei aus der aktuellen Zeile +1, -1 usw.
Wie kann das möglicherweise funktionieren? Ich sehe nur zwei Möglichkeiten:
Ich sehe also keinen Weg, etwas Besseres als die aktuellen Funktionen zu haben :-)
Ich bin damit einverstanden, dass es etwas bedauerlich ist, dass es keinen "atomaren" Befehl gibt, der aus dem nächsten Zeichen gelöscht werden kann. Ich sehe die praktische Verwendung dessen, was Sie fragen: Wenn Sie einen Text kürzen, möchte ich ihn häufig ausgehend von einem Leerzeichen löschen, weil ich am Ende der Zeilen kein nachfolgendes Leerzeichen lassen möchte (Git beschwert sich darüber, zum Beispiel). Und das
w
unde
Wort jumping Befehle sind nicht sehr geeignet für diese, alsw
zum ersten Buchstaben sprang unde
springt zum letzten Buchstaben, und es gibt keine Verknüpfung auf den Platz zu springen nach einem Wort, außer expliziten Suchanfrage wief
. So verstehe ich und teile sogar Ihre Bedürfnisse. Ich sehe nur nicht, wo dies in der vorhandenen Funktionalität zusammengedrückt werden kann.Die beste Alternative, die ich mir vorstellen kann, besteht darin, die Aktion in einem Makro aufzuzeichnen
d
. Nehmen Sie am Ende eines Wortes (im letzten Buchstaben) Folgendes auf:Anschließend können Sie diese Aktion am Ende eines anderen Wortes mit wiederholen
@d
. Um es wiederholt zu tun, können Sie tun@@
. Wenn Sie es wiederholt tun, ist dies schneller zu tippen alslD
, aber dies kann von Ihrem Geschmack abhängen. Wenn Sie es nicht wiederholt tun, hilft das Makro nicht wirklich, da es sowieso die gleiche Anzahl von Tastenanschlägen gibt (+ die Erstellung des Makros).quelle