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.

Martin Tournoij
quelle
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-
romainl
quelle
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.

Janis
quelle
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
Michael Durrant
quelle
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)
Stryker
quelle