it-swarm.com.de

vi-Editor, kopiere einen Block (nicht übliche Aktion)

Im vi-Editor muss ich einen Block kopieren. Es gibt viele Möglichkeiten, aber eine Möglichkeit ist sehr schnell.

  1. beschriften Sie die erste Zeile auf irgendeine Weise,

  2. dann beschriften Sie die Endzeile auf irgendeine Weise,

  3. setzen Sie dann einen Befehl, um die beschrifteten Zeilen zu kopieren.

  4. dann kopieren, kann 'p' verwenden, aber nicht sicher.

Kennt jemand die Befehle (nicht yy oder 10yy)? Danke im Voraus. 

36
Yang

Eine andere Option, die sich leichter merken lässt, besteht darin, Markierungen in den beiden Zeilen mit zu platzieren ma und mbFühren Sie dann :'a,'byank aus.

Viele verschiedene Möglichkeiten, um diese Aufgabe zu erfüllen, bieten nur eine andere.

31
Randy Morris

просто используйтеVвыбрать строки илиvвыбрать символы илиCtrlvвыбрать блок.

Когда выделение охватывает область, которую вы хотите скопировать, просто нажмитеyи использоватьpвставить его куда угодно ...

82
André Keller

In der Dokumentation steht:

Ausschneiden und Einfügen:

  1. Positionieren Sie den Cursor an der Stelle, an der Sie mit dem Schneiden beginnen möchten.
  2. Drücken Sie v um Zeichen (oder Großbuchstaben) auszuwählen V ganze Zeilen markieren).
  3. Bewegen Sie den Cursor an das Ende dessen, was Sie schneiden möchten.
  4. Drücken Sie d schneiden (oder y Kopieren).
  5. Bewegen Sie sich dorthin, wo Sie einfügen möchten.
  6. Drücken Sie P vor dem Cursor einfügen, oder p zum Einfügen nach.

Das Kopieren und Einfügen erfolgt mit den gleichen Schritten, außer in Schritt 4, in dem Sie y anstelle von d drücken würden:

d = delete = cut

y = yank = copy

45
Kaleem Ullah

Es hört sich so an, als wollten Sie Markierungen in die Datei einfügen.

mx Platziert eine Markierung mit dem Namen x unter dem Cursor

y'x zieht alles zwischen der aktuellen Position des Cursors und der Zeile mit dem Zeichen x .

Sie können verwenden 'x Bewegen Sie einfach den Cursor auf die Zeile mit Ihrer Markierung.

Sie können verwenden `x (ein Back-Tick), um zur genauen Position der Marke zu gelangen.


Eine Sache, die ich die ganze Zeit mache, ist alles zwischen den Cursor zu ziehen und x in die Zwischenablage zu markieren .

Das können Sie so machen:

"+y'x

HINWEIS: In einigen Umgebungen wird der Puffer der Zwischenablage durch ein * anstelle eines + dargestellt.


Ähnliche Fragen mit einigen guten Antworten:

15
jahroy

Tastenkombinationen dazu sind:

  1. Zum Kopieren: Setzen Sie den Cursor auf den Blockanfang und drücken Sie md . Gehen Sie dann zum Blockende und drücken Sie y'd . Dadurch wird der Block zum Einfügen ausgewählt. Drücken Sie p

  2. Für den Schnitt: Setzen Sie den Cursor auf den Blockanfang und drücken Sie ma . Gehen Sie dann zum Blockende und drücken Sie d'a . Dadurch wird der Block zum Einfügen ausgewählt. Drücken Sie p

3
Aman Khare

Ich fand den folgenden Befehl viel bequemer. Wenn Sie Zeilen von 6 bis 12 kopieren und von der aktuellen Cursorposition einfügen möchten.

:6,12 co .

Wenn Sie Zeilen von 6 bis 12 kopieren und von der 100. Zeile einfügen möchten.

:6,12t100

Quelle: https://www.reddit.com/r/vim/comments/8i6vbd/efficient_ways_of_copying_few_lines/

3
catuf

Sie können dies wie in vi tun, z. B. um Zeilen von 3020 bis zum Ende zu ziehen und diesen Befehl auszuführen (den Block in eine Datei schreiben):

: 3020, $ w/tmp/Ruck

Um diesen Block in eine andere Zeile/Datei zu schreiben, gehen Sie zur gewünschten Position und führen Sie den nächsten Befehl aus (Datei einfügen, die zuvor geschrieben wurde):

: r/tmp/ranken

(Erinnerung: Vergessen Sie nicht, die Datei zu entfernen:/tmp/yank)

0
user9091660