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.