
Ich schneide eine Zeile mit aus ddund möchte dann die gesamte Zeile am Ende einer anderen Zeile einfügen. Das Problem ist jedoch, dass, da dddie gesamte Zeile ausgeschnitten wird, wahrscheinlich auch das Zeilenumbruchzeichen eingeschlossen wird.
Wenn ich also über einfüge p, wird es automatisch in die nächste Zeile eingefügt. Und wenn ich Shift+ eingebe p, wird es vor die Zeile eingefügt, in die ich einfügen möchte.
Gibt es also eine Möglichkeit, die gesamte Zeile, die ich ausgeschnitten habe, am Ende einer Zeile einzufügen?
Antwort1
Um eine Zeile ohne neue Zeile auszuschneiden, können Sie an der Cursorposition d$
oder drücken. Um sie am Ende einer anderen Zeile einzufügen, können Sie an deren Ende gehen und einfach drücken . Falls Sie die Zeile nicht wie erwartet einfügen können, können Sie an das Ende der Zeile gehen, in die Sie einfügen wollten. Drücken Sie dann und dann (Strg-R) und (Anführungszeichen). Ihr kürzlich ausgeschnittener oder kopierter Text wird eingefügt.D
p
i
<C-R>
"
Antwort2
Nachdem Sie Ihre Zeile nach der aktuellen eingefügt haben, pdrücken Sie einfach eine weitere jin Ihrer vorherigen Zeile, um die beiden Zeilen zu verbinden und so den unerwünschten Zeilenumbruch zu vermeiden …
Antwort3
Die beste Lösung, die mir momentan einfällt, ist:
A<C-r>+
Das heißt: Aktivieren Sie den Einfügemodus am Zeilenende und fügen Sie den Inhalt des Registers ein +
.
Es werden auch Zeilenumbrüche eingefügt. dd
wird einfach auf ganzen Zeilen ausgeführt (kurz für 1dd
).
Antwort4
Tatsächlich ist der Anwendungsfall oft folgender: Sie möchten eine komplette Zeile löschen (einschließlich der neuen Zeile, daher funktioniert d$
/ D
nicht, da eine leere Zeile übrig bleibt), diese aber am Ende oder in eine vorhandene Zeile einfügen, ohne eine neue zu erstellen.
MeinUnconditionalPaste-Pluginbietet mehrere Mappings, die den Registerinhalt automatisch für den gewünschten Anwendungsfall konvertieren. Ihr Beispiel wäre dd
, in Zielzeile verschieben, $gcp
. gcp
ist das Mapping fürzeichenweises Einfügen.