1806 votes

Comment dupliquer une ligne entière dans Vim ?

Comment faire pour dupliquer une ligne entière en Vim d'une manière similaire à Ctrl + D dans IntelliJ IDEA/ Resharper ou Ctrl + Alt + / en Eclipse ?

59 votes

Les gens n'utilisent-ils plus vimtutor ? C'est probablement dans les cinq premières minutes d'apprentissage de Vim.

163 votes

Voulez-vous dupliquer cette ligne ? Y es P location. :)

9 votes

Pour information, j'ai suivi le vimtutor une douzaine de fois au cours des deux derniers mois et ce concept n'est pas abordé. Il dit comment faire "dd" et "v - naviguer - y" suivi de "p". Il ne dit pas comment copier une seule ligne sans l'effacer comme cela est demandé ici.

3039voto

Mark Biek Points 41769

yy o Y pour copier la ligne (mnémotechnique : y ank )
o
dd a d elete la ligne (Vim copie ce que vous avez supprimé dans un "registre" de type presse-papiers, comme un couper opération)

puis

p a p aste le texte copié ou supprimé après la ligne actuelle
o
P a p aste le texte copié ou supprimé avant la ligne actuelle

142 votes

Un excellent point. Pour une raison quelconque, je trouve que taper y deux fois est plus rapide pour moi que SHIFT-y.

28 votes

@camflan je pense que le Y devrait être "copier du curseur à la fin"

46 votes

Et 2yy peuvent être utilisés pour copier 2 lignes (et pour tout autre n)

450voto

Benoit Points 35553

Mode normal : voir les autres réponses.

El Ex manière :

  • :t. dupliquera la ligne,
  • :t 7 le copiera après la ligne 7,
  • :,+t0 copiera la ligne actuelle et la suivante au début du fichier ( ,+ est un synonyme de l'intervalle .,.+1 ),
  • :1,t$ copiera les lignes du début jusqu'à la position du curseur jusqu'à la fin ( 1, est un synonyme de l'intervalle 1,. ).

Si vous avez besoin de vous déplacer au lieu de copier, utilisez :m au lieu de :t .

Cela peut être vraiment puissant si vous le combinez avec :g o :v :

  • :v/foo/m$ déplacera toutes les lignes ne correspondant pas au motif "foo" à la fin du fichier.
  • :+,$g/^\s*class\s\+\i\+/t. copiera toutes les lignes suivantes de la forme class xxx juste après le curseur.

Référence : :help range , :help :t , :help :g , :help :m y :help :v

0 votes

Savez-vous s'il existe un moyen de faire cela en mode visuel ? L'un de mes schémas d'utilisation les plus courants est le suivant : visual select 3 lines + :d ou :y, par exemple

2 votes

Lorsque vous appuyez sur : en mode visuel, il est transformé en '<,'> afin de présélectionner la plage de lignes sur laquelle s'étendait la sélection visuelle. Donc, en mode visuel, :t0 copiera les lignes du début.

2 votes

Pour mémoire : lorsque vous tapez deux points ( :), vous passez en mode ligne de commande où vous pouvez saisir des commandes Ex. vimdoc.sourceforge.net/htmldoc/cmdline.html Les commandes Ex peuvent être très puissantes et laconiques. Les solutions les plus simples sont les commandes en "mode normal". Si vous voulez copier/déplacer/supprimer une ligne ou une série de lignes éloignées, une commande Ex peut être beaucoup plus rapide.

315voto

Linulin Points 2317

YP o Yp o yyp .

0 votes

Y est généralement remappé en y$ (yank (copy) jusqu'à la fin de la ligne (à partir de la position actuelle du curseur, pas du début de la ligne)) though. Avec cette ligne dans .vimrc : :nnoremap Y y$

1 votes

N'oubliez pas le pauvre vieux yyP

0 votes

Des combinaisons folles ...

279voto

Adam Points 171

copy and paste in vim

Il n'y a rien de plus simple que ça ! Du mode normal :

yy

puis déplacez-vous à la ligne où vous voulez coller et

p

37 votes

Qu'avez-vous utilisé pour faire le gif ?

7 votes

@Zoltán vous pouvez utiliser LiceCap, qui est de petite taille.

58voto

pjz Points 11925

yy

arrachera la ligne en cours sans l'effacer

dd

supprimera la ligne en cours

p

se put une ligne saisie par l'une des méthodes précédentes

4 votes

Celui-ci est arrivé en premier mais son duplicata est accepté : stackoverflow.com/a/73357/1438029

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X