Dans Vim, comment copier depuis plusieurs lignes? (pas une plage);


20

Je suppose que j'ai

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

comment puis-je copier les lignes 1 et 3 (pas une plage de lignes) et les coller, par exemple à la ligne 8? Si je fais cela avec |arg comme ( 1y|3y), je tirerais des lignes vers plusieurs registres, non? Mais comment puis-je mettre à partir de plusieurs registres à la fois?

Réponses:


33

Vous pouvez ajouter à un registre au lieu de l'effacer en utilisant la lettre majuscule au lieu de la lettre minuscule.

Par exemple:

: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
Vous pouvez également le faire en mode normal avec "ayyjj"Ayy"ap.
wchargin

5
(ou 1G"ayy3G"Ayy8G"appour les numéros de ligne explicites)
wchargin

1
N'est-ce pas juste Gpour aller à la ligne, non <C-G>?
David

1
C'est trop cool. Vous pouvez continuer à ajouter autant de choses à mettre en mémoire tampon Aque vous le souhaitez et tout sera conservé. Pour recommencer, mettez quelque chose dans le registrea
CornSmith

1
@CornSmith Nitpick: buffer est un terme très spécifique dans le contexte de vim. "aest un registre .
Poignée de porte

1

Vous pouvez utiliser la :copycommande, qui peut être abrégée comme suit :t:

:1t8
:3t8

Si vous souhaitez copier une plage de lignes (par exemple toutes les lignes de 1 à 3), vous pouvez le faire comme ceci:

:1,3t8

Je veux copier les lignes par numéro, mais pas une GAMME DE LIGNES ... Puis-je ajouter quelque chose comme la commande t à la ligne?
Quel est Myname le

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

Ceux-ci peuvent être mieux exprimés avec la :tcommande, qui n'efface pas non plus les registres "or 0.
Poignée de porte
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.