In Vim, come posso copiare da più righe? (non un intervallo);


20

Supponiamo di averlo fatto

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

come posso copiare le righe 1 e 3 (non un intervallo di righe) e incollarle, ad esempio alla riga 8? Se lo facessi in modo |simile a arg like ( 1y|3y), tirerei le righe su più registri, giusto? Ma come posso mettere da più registri contemporaneamente?

Risposte:


33

È possibile aggiungere un registro invece di cancellarlo utilizzando la lettera maiuscola anziché quella minuscola.

Per esempio:

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a

1
Puoi anche farlo in modalità normale con "ayyjj"Ayy"ap.
wchargin,

5
(o 1G"ayy3G"Ayy8G"apper numeri di riga espliciti)
wchargin,

1
Non è solo Gper andare in fila, no <C-G>?
David,

1
Questo è veramente forte. Puoi continuare ad aggiungere tutte le cose nel buffer Ache vuoi e manterrà tutto. Per ricominciare, metti qualcosa nel registroa
CornSmith,

1
@CornSmith Nitpick: buffer è un termine molto specifico nel contesto di vim. "aè un registro .
Maniglia della porta,

1

È possibile utilizzare il :copycomando, che può essere abbreviato come :t:

:1t8
:3t8

Se vuoi copiare un intervallo di linee (ad esempio tutte le linee da 1 a 3) puoi farlo in questo modo:

:1,3t8

Voglio copiare le linee per numero, ma non una GAMMA DI LINEE ... Posso aggiungere qualcosa come il comando t al comando?
Cos'è Myname il

0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9

Questi possono essere espressi meglio con il :tcomando, che inoltre non cancella i registri "o 0.
Doorknob,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.