web-dev-qa-db-fra.com

Comment y avoir une ligne particulière sans déplacer le curseur dans Vim?

Par example

alt text

Comment puis-je jauquement et coller la ligne 4 seulement pour la ligne 12 sans avoir à déplacer le curseur à la ligne 4?

alt text

40
Lazer

Si le curseur est déjà à la ligne 12, alors un simple

[.____]: 4Y 
 P 

est-ce que pour moi?.

53
frabjous

Essaye ça:

:4,4y  
P
9
Louis Salin

Essayer:

:4co11

Vous pouvez utiliser un argument de 0 Coller à la ligne 1. Cela fonctionnera également avec des gammes:

:m,n co k

copiera des lignes m via n à la ligne k+1. De plus, peu importe où vous êtes dans le tampon. La commande move, m, fonctionne de la même manière.

8
gvkv

Cela devrait le faire:

:4,12y
p
k
2
Umang

Le plus court:

:1t. copie la première ligne sous le courant.

Avec des gammes: :1,4t. copie ligne 1 à 4 (inclusive) sous le courant.

Aussi possible avec des numéros de ligne relatifs:

:-1t. copie la ligne précédente sous le courant.

Dans votre exemple :4t-1 Copierait la quatrième ligne sous la ligne recherchée.

Noter: :t est un synonyme de la :co[py] commande.

2
Erwin Rooijakkers

D'autres ont déjà mentionné la méthode la plus directe pour faire cela, ce qui est :4y, mais je veux ajouter deux notes à ce sujet, ce qui peut être utile:

Un, si vous tapez :help range Vous apprendrez tout sur l'utilisation des gammes pour appliquer aux commandes de style ex. Très utile dans de nombreux cas et bien plus polyvalents que d'utiliser des numéros de ligne. Par exemple, si vous voulez youler la première ligne commençant par "Yank" après le début du document (même si c'est sur la première ligne), utilisez :0/^yank/y. La partie la plus puissante des gammes est la capacité de les combiner, par ex., :./^Chapter/+50?Pete?d signifie "trouver la ligne suivante pour commencer avec le chapitre Word (recherche vers l'avant de la ligne actuelle), puis sautez en avant 50 lignes et recherchez en arrière pour le mot Pete et supprimez la première ligne que vous trouvez." Sauf que cela ne bouge pas le curseur, il fait simplement ce que vous le dites.

(J'ai utilisé ce type de spécification de gamme pour automatiser la création de la documentation Fiddly impliquant la recherche du nom de la fonction sous le curseur, puis recherchez la ligne suivante qui a dit "description" et la tirant à un registre spécifique ... etc.)

L'autre conseil, c'est que vous devriez savoir sur le saut. Taper :help jump-motions Pour en apprendre pleinement, mais la façon dont il se rapporte ici, c'est que vous pouvez sauter à la ligne 4, y aiguisé, puis revenez avec 4Gyy'' (ou utilisez des backtsks au lieu d'Apostrophes pour revenir à votre position de départ exacte, plutôt que la même ligne que vous avez démarrée.)

2
Wildcard

Construire sur Réponse de erwin Rooijakkers , cette ligne de copie 4 en dessous de la ligne 11, quel que soit le lieu de votre curseur:

:4t11
0
Lorin Hochstein