Wie reiße ich eine Leitung mit einer bestimmten Leitungsnummer?


Antworten:


59

Von :help :yank:

:[range]y[ank] [x]      Yank `[range]` lines [into register x].

Also, um Zeile 4 zu reißen, würde man schreiben:

:4yank

Beachten Sie, dass Sie dies im Einfügemodus einfach mit tun können <C-o>. Auf diese Weise können Sie einen Befehl ausführen und anschließend in den Einfügemodus zurückkehren. zum Beispiel:

<C-o>:4yank

Sie können natürlich auch andere Bereiche verwenden. Einige Beispiele:

  • Zeilen 1 bis 3: :1,3yank
  • Der gesamte Puffer: :%yank
  • Von der aktuellen Zeile bis zum Ende des Puffers: :.,$:yank
  • Die aktuelle Zeile und die nächsten 3: :.,+3yank
  • Die aktuelle Zeile und die vorherigen 3: :-3,.yank
  • Die Zeile 3 Zeilen über der aktuellen Zeile: :-3yank

Die nützlichsten Dinge, an die Sie sich über Bereiche erinnern sollten:

  • Es ist in Form von :line1,line2command.
  • A .ist die aktuelle Zeile (Sie können den Punkt in den meisten Fällen weglassen :.,+3yankund :,+3yanksind gleich)
  • Mit +nund legen Sie Linien relativ zur aktuellen Position fest -n.

Siehe :help [range]für weitere Informationen.


6
Bonuspunkte für die Erwähnung von <Co>, das nutze ich nicht.
— PhilippFrank,

7
Erwähnenswert ist auch, dass Sie :4yankmit:4y
— NewbieOnRails

35

Neben der Antwort von Carpetsmoker möchte ich auf die fantastischen :help :mund :help :t.

Wenn Sie Zeile 4 direkt unter die aktuelle Zeile kopieren möchten, können Sie dies tun:

:4t.

oder das, wenn Sie diese Zeile direkt über der aktuellen Zeile kopieren möchten:

:4t-

1

Neben den Ex-Modus-Befehlen, die Sie haben, können Sie dies auch im Befehlsmodus erreichen, z. B .: 4GY''- was bedeutet: Gehe zu Zeile 4 ( 4G), Yank-Zeile ( Y) und kehre zur vorherigen Zeile ( '') zurück.

Sie können auch Sprungmarken verwenden. für Ihre zweite Frage, zB durch: mm3kY'm- was bedeutet: Setzen Sie die Markierung m ( mm), gehen Sie drei Zeilen nach oben ( 3k), ziehen Sie die Linie ( Y) und kehren Sie zur Markierung m ( 'm) zurück.


1
Die Verwendung von `` ist wahrscheinlich eine bessere Empfehlung als '', da ersteres auf dieselbe Zeile und Spalte zurückgeht. Das Gleiche gilt für 'm vs.' m.
— Jamessan

Genau. (Irgendeine Idee, wie man wörtliche Backtics im Wiki-Markup erstellt, da sie eine besondere Bedeutung haben?) - Andernfalls dient Ihr Kommentar als Ergänzung zu meiner Antwort und als Hinweis für die Leser.
— Janis,

Sie müssen mehrere Backticks verwenden, um den Inline-Code abzugrenzen (siehe daringfireball.net/projects/markdown/syntax#code ). Ich weiß, dass es bei Fragen / Antworten funktioniert, aber ich konnte es in meinem Kommentar nicht zum Funktionieren bringen.
— Jamessan

1

Einfach eintippen

:4y

zu reißen Linie 4

es wird in das unbenannte Register eingetragen. Dann können Sie (zum Beispiel) verwenden p, um es an einer anderen Stelle abzulegen. Sie können es auch [n]pz. B. mit 10p zehnmal einfügen.

Sie können es in ein benanntes Register wie "a" mit einfügen

:4y a

2
Der Teil über das Einfügen in ein benanntes Register mit "ay4" sieht nicht richtig aus. Wenn Sie dies tun, wartet vim darauf, dass Sie "4 whats?" Wenn Sie / foo <Enter> eingeben, wird die aktuelle Position bis zum 4. nach dem Auftreten von "foo" usw. verschoben.
— Don Hatch,

Der letzte Befehl sollte lauten 4G"ayy.
— Romainl

0

Du kannst tun

:10y <Enter> (to copy the line 10)
p (paste line 10 where the cursor is)

Das Einrichten einer relativen Zahl hilft auch beim Wechseln zwischen Codezeilen.

:set relativenumber

Jetzt können Sie die 5. Zeile über dem Cursor kopieren mit:

:-5y <Enter>
:p (to paste)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.