Oft möchte ich in vim eine Zeile komplett löschen, also benutze ich dd. Ich muss diese Zeile dann jedoch an einer anderen Position innerhalb einer Zeile einfügen. Dadurch wird jedoch vor dem Einfügen eine neue Zeile eingefügt, was es für mich sehr schwierig macht, das gewünschte Ergebnis zu erzielen. Zum Beispiel,
while( pasteInHere )
{
cin >> n; // Delete this line completely with dd
}
Wenn ich dies mit dem obigen Code mache, bekomme ich:
while( pasteInHere )
cin >> n; // Delete this line completely with dd
{
}
Was ist sehr weit von dem gewünschten Ergebnis entfernt ... Wie kann ich dieses Newline-Verhalten unterdrücken oder eine andere Methode verwenden, die es sehr effizient macht? Ich denke nicht, dass d $ gut ist, weil ich nicht nur zum Zeilenanfang gehen muss, sondern wenn ich auch die leere Zeile löschen möchte, muss ich sie in einem anderen Register löschen. Ich denke, es sollte einen einfacheren Weg geben! Vielen Dank.
quelle
0D
Zeile außer Zeilenumbruch löschen. Und alsgJ
Linien zu verbinden. Jetzt können Sie den Text ohne Unterbrechungslinie und ohne Leerzeile einfügen.Antworten:
Sie können an eine beliebige Stelle in der Zeile über der zu löschenden Zeile gehen
JD
und diese dannp
an der gewünschten Stelle drücken und einfügen .J
verbindet die beiden Zeilen und bewegt Sie am Anfang des Textes, den Sie löschen möchten. Dadurch werden ein neues Zeilenzeichen und der Einzug der Zeile, die Sie verschieben möchten, gelöscht.D
Löscht von der aktuellen Cursorposition bis zum Ende der Zeile, behält jedoch das Zeichen für die neue Zeile bei.Tipp: Sie können verwenden,
:pu
wenn Sie mit gelöschtD
oder mit gezogen habeny$
und mit einer neuen Zeile einfügen möchten .quelle
Nicht wirklich einfacher, aber etwas effizienter, und Sie können auch Karten im Normalmodus für beide Sequenzen erstellen:
quelle
Sie können etwas erreichen, das mit einem ganz gut funktioniert
imap
. Fügen Sie Folgendes hinzuvimrc
:Dadurch wird eine Zuordnung erstellt CTRL-a, in die der zuletzt gelöschte Text (mit
dd
oder ähnlich) eingefügt wird. Wenn Sie möchten, können Sie natürlich einen anderen Schlüssel für das Mapping verwenden.Verweise:
quelle
Das fällt mir auch ein bisschen ein, ich hätte nie gedacht, es vorher zu optimieren, aber dieses Mapping funktioniert:
dil
ist „Löschen in line“, ähnlich wiediw
,di"
usw.quelle
Ohne neue Zeile einfügen
Fügen Sie dies in Ihre .vimrc-Datei ein:
Beispiel:
Jetzt können Sie eingeben
gp
, um#D51B3F
danach einzufügen,color:
während sich mein Cursor:
im Normalmodus befindet.Ruck ohne neue Linie
Verwenden Sie die Antwort von flukus:
als Akronym für innere Zeile löschen . Dadurch werden auch führende Einrückungen beseitigt.
quelle
Sie können den zu kopierenden Text auswählen, indem Sie auf drücken,
v
und ihn dann durch Drücken in den Puffer aufnehmeny
und an einer beliebigen Stelle einfügenp
. Es wird keine neue Zeile eingefügt.quelle