Zum Beispiel
Wie kann ich Zeile 4 nur in Zeile 12 ziehen und einfügen, ohne den Cursor in Zeile 4 bewegen zu müssen?
Zum Beispiel
Wie kann ich Zeile 4 nur in Zeile 12 ziehen und einfügen, ohne den Cursor in Zeile 4 bewegen zu müssen?
Antworten:
Befindet sich der Cursor bereits in Zeile 12, so ist dies ein einfacher
: 4y P
tut es für mich.
x
? Wenn ich es versuche, :4x
bekomme ich E140: Use ! to write partial buffer
. Vielen Dank!
:4d
Wie wäre es damit: Der Cursor befindet sich in Zeile 11, Sie befinden sich im "vi" -Modus.
:4co.<return>
Du kannst es anscheinend auch mit einem Muster machen:
:/^Yank/co.<return>
Sie können "mo" (Verschieben) anstelle von "co" (Kopieren) verwenden, um die Linie nur zu verschieben, anstatt zu reißen und zu setzen.
:4t.
Versuche dies:
:4,4y
P
Versuchen:
:4co11
Sie können ein Argument von verwenden, 0
um es in eine Zeile einzufügen 1
. Dies funktioniert auch mit Bereichen:
:m,n co k
werden Zeilen kopieren m
durch n
die Linie k+1
. Außerdem spielt es keine Rolle, wo Sie sich im Puffer befinden. Der move
Befehl m
funktioniert ähnlich.
Andere haben bereits die direkteste Methode erwähnt, um dies zu tun :4y
, aber ich möchte zwei Anmerkungen hinzufügen, die nützlich sein können:
Eins, wenn Sie in geben :help range
Sie alle lernen über Bereiche mit Ex - Stil Befehle anzuwenden. In vielen Fällen sehr nützlich und weitaus vielseitiger als die Verwendung von Zeilennummern. Wenn Sie beispielsweise die erste Zeile nach dem Beginn des Dokuments mit "yank" beginnen möchten (auch wenn sie sich in der ersten Zeile befindet), verwenden Sie :0/^yank/y
. Der mächtigste Teil von Bereichen ist die Fähigkeit, sie zu kombinieren, z. B. :./^Chapter/+50?Pete?d
bedeutet "Finde die nächste Zeile, die mit dem Wort Kapitel beginnt (suche vorwärts von der aktuellen Zeile), springe dann 50 Zeilen vorwärts und suche rückwärts nach dem Wort Pete." und löschen Sie die erste Zeile, in der Sie sie finden. " Abgesehen davon, dass es den Cursor nicht bewegt, TUT es nur, was Sie ihm sagen.
(Ich habe diese Art der Bereichsspezifikation verwendet, um die Erstellung von fummeligen Dokumentationen zu automatisieren, indem ich nach dem Funktionsnamen unter dem Cursor gesucht habe, dann nach der nächsten Zeile gesucht habe, in der "Description" steht, und sie in ein bestimmtes Register gezogen habe ... usw.)
Der andere Tipp ist, dass Sie über das Springen Bescheid wissen sollten. Geben Sie :help jump-motions
darüber erfahren voll, aber so , wie es hier bezieht , ist , dass Sie springen 4 Zeile, zerren sie und dann RETURN mit 4Gyy''
(oder verwenden Sie Backticks anstelle von Apostrophe exakt auf Ihre Ausgangsposition zurück zu springen, anstatt nur die gleiche Linie Du hast angefangen um.)
Kürzeste:
:1t.
kopiert die erste Zeile unter die aktuelle.
Mit Bereichen:
:1,4t.
Kopiert Zeile 1 bis 4 (einschließlich) unter den aktuellen.
Auch mit relativen Zeilennummern möglich:
:-1t.
kopiert die vorherige Zeile unter die aktuelle.
In Ihrem Beispiel :4t-1
würde die vierte Zeile unter der gewünschten Zeile kopiert.
Hinweis: :t
ist ein Synonym für den :co[py]
Befehl.