3 Stimmen

Ausschneiden und einfügen in Vim, ohne die nächste Zeile nach oben zu verschieben

Wenn ich in VIM schneide und einfüge, indem ich v drücke und ans Ende der Zeile gehe, indem ich $ benutze und dann d drücke, wird die nächste Zeile zur selben Zeile verschoben, die ich gerade schneide.

Wie kann ich das stoppen?

8voto

Xavier T. Punkte 39220

Es bewegt sich nach oben, weil Sie alle Zeichen einschließlich Zeilenwechsel/Umbruch entfernt haben.

Wie üblich gibt es mehrere Lösungen mit Vim. Es gibt keine "eine wahre Art", aber Sie können die folgenden Befehle ausprobieren.

  • Sie können im normalen Modus D (Großbuchstabe) verwenden, das alles bis zum Ende der Zeile löscht.

    Siehe :help D

  • Verwendung einer anderen Bewegung

    Was Sie anstelle von $ tun könnten, um ans Ende der Zeile zu gelangen, ist g_ zu verwenden. Es bewegt sich zum letzten nicht leeren Zeichen der Zeile und wählt keinen Zeilenwechsel aus.

    Siehe :help g_

    Also sollte vg_d so funktionieren, wie Sie es wollen.

  • Ersetzung verwenden

    Alternativ könnten Sie anstelle des Ausschneidens das gelöschte Zeichen durch ein Leerzeichen ersetzen.

    Also sollte v$rLEERZEICHEN funktionieren, um zu löschen, aber es wird die ersetzten Zeichen nicht im Register speichern (zum späteren Einfügen zum Beispiel).

1voto

eckes Punkte 59894

Um alles ab der aktuellen Cursorposition bis zum Ende zu schneiden, verwenden Sie C.

:he C wird Ihnen helfen:

Löschen Sie von der Cursorposition bis zum Ende der Zeile und [count]-1 weitere Zeilen [in Register x] und starten Sie das Einfügen. Synonym für c$ (nicht |zeilenweise|).

Wenn Sie dies tun, wird die aktuelle Zeile (vorausgesetzt, Sie befinden sich am Anfang der Zeile, wenn Sie C drücken) leer werden und der Inhalt (standardmäßig) in das Register " kopiert.


Bearbeiten: Wie Xavier in seinem Kommentar (und seiner Antwort) anmerkt, könnte das Gleiche mit D erreicht werden. Es schneidet auch alles ab der aktuellen Cursorposition bis zum Ende der Zeile, geht jedoch nach dem Schneiden nicht in den Einfügemodus über.

0voto

anubhava Punkte 713155

Wenn Sie diese Tastenkombination verwenden, wird die nächste Zeile nicht nach oben verschoben.

v $ h d

Es bewegt sich nach oben, weil das Zeilenende-Zeichen $ auch gelöscht wird, ohne den Cursor um 1 Zeichen zurück zu bewegen.

0voto

etuardu Punkte 4498

Überspringen Sie einfach den visuellen Modus und tauschen Sie die beiden anderen Befehle aus, d.h. drücken Sie d $.

Dies ist kürzer als Ihr Ausgangsbefehl und bricht nicht mit Ihrer Tradition, andere Tastenanschläge einzuführen, mit denen Sie möglicherweise nicht vertraut sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X