2010-08-27 9 views
5

Wie ist es in Vim möglich, den Rest einer Linie durch den gerissenen Text zu ersetzen? Wenn ich "D" drücke, wird der gerissene Text durch den gelöschten Text ersetzt.Vim: Das Ende der Linie ersetzen

Wie ist es auch möglich, bis zum Ende der Linie zu ziehen? Wenn ich "Y" drücke, wird die ganze Zeile gezogen.

Antwort

2

Press vvisuellen Modus auf dem Startzeichen der Auswahl einzugeben. Dann drücken Sie $, um zum Ende der Zeile zu gehen. Danach drücken Sie y, um die Auswahl zu löschen. So

:

v$y

Statt yanking verwenden p einzufügen. Dies wird über die Auswahl eingefügt. So, nachdem Sie D verwenden, um einen Text zu löschen, tun:

v$p

Dies wird den gelöschten Text über die Auswahl einfügen.

+0

Oh, Entschuldigung, ich dachte, du meinst, drücken Sie v $ y, um zu zerren. Ja, das funktioniert, danke. – Rafid

12

zwei Möglichkeiten, wie Sie Text an das Ende der Zeile mit zuvor zerrte Text ersetzen:

  1. v$p - v visuellen Modus zu gelangen; $ zum Ende der Zeile wechseln; p zum Einfügen über markierten Text.
  2. D"0p - der letzte gerissene (im Gegensatz zu gelöschten) Text wird in Register 0 gespeichert, also: zum Löschen am Zeilenende; "0, um Register 0 auszuwählen; p, um dieses Register einzufügen.
+0

Wusste nicht über Register '0'. Das ist ziemlich cool. – wuputah

+0

+1 - wusste nicht über das Register. –

+0

Ja, ich wusste auch nichts über den Registerkommentar. Gibt es trotzdem zwei Antworten als Antwort? :) – Rafid

4

Ihre Fragen scheinen von anderen an dieser Stelle (v$p und y$) gründlich zu beantworten, aber er einen zusätzlichen Information gewünscht:

zerren der Linie zu beenden, ist der Standard-Weg y$ . Es ist jedoch eine relativ gängige Praxis, map Y y$ in Ihrem .vimrc, da das Standardverhalten von Y ist redundant mit yy, und ist inkonsistent mit anderen Zuordnungen, wie und C.

+0

Danke für diesen Kommentar, es ist sehr nützlich. Ich werde das zu meinem .vimrc hinzufügen :) – Rafid

+0

Das ist schick. Vielen Dank – devth

1

Hier ist, wie ich es tun würde:

  1. "ay$ auf die gewünschte Position ersetzen
  2. Cursor (yank von Cursor von Zeile in das Register a zu beenden).
  3. D (löschen bis zum Ende der Zeile)
  4. "ap (den Text in Schritt 1 zerrte einfügen)

Zugegeben, das ist sehr ähnlich wie another answer aber ich ziehe die Angabe ausdrücklich ein Register, weil es Kräfte Ich denke darüber nach, was ich mache.Ich konnte sehen, dass ich versehentlich das Register 0 überschrieb, wenn ich abgelenkt wurde oder versuchte, etwas anderes zu tun.

2

Wenn Sie Text löschen möchten, ohne das Haupt- (unbenannte) Register zu beeinflussen, löschen Sie Ihren Text in das "Schwarze-Loch-Register", genannt "_. Tun Sie dies über "_D. Dann ist das unbenannte Register nicht betroffen und Sie können Ihren zuvor gerissenen Text wie gewohnt einfügen.

Siehe :h quote_.