web-dev-qa-db-fra.com

Dupliquer une ligne entière dans Vim

Comment dupliquer une ligne entière dans Vim de la même manière que Ctrl+D dans IntelliJ IDEA/Resharper ou Ctrl+Alt+/ dans Eclipse?

1492
sumek

yy ou Y copier la ligne
ou
dd supprimer (couper) la ligne

puis

p coller le texte copié ou supprimé after la ligne en cours
ou
P coller le texte copié ou supprimé avant la ligne en cours

2555
Mark Biek

Mode normal: voir les autres réponses.

Le Ex way:

  • :t. va dupliquer la ligne,
  • :t 7 le copiera après la ligne 7,
  • :,+t0 copie les lignes courante et suivante au début du fichier (,+ est un synonyme de la plage .,.+1),
  • :1,t$ copie les lignes du début à la fin du curseur jusqu'à la fin (1, est un synonyme de la plage 1,.).

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

Cela peut être très puissant si vous le combinez avec :g ou :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. va copier toutes les lignes suivantes du formulaire class xxx juste après le curseur.

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

375
Benoit

YP ou Yp ou yyp.

279
Linulin

copy and paste in vim

N'obtenez pas plus simple que cela! En mode normal:

yy

puis passez à la ligne que vous voulez coller et

p
229
Adam

yy

tirera la ligne actuelle sans la supprimer

dd

va supprimer la ligne en cours

p

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

49
pjz

Faire ceci:

Premier, yy pour copier la ligne en cours, puis p coller.

38
Eric Z Beard

Si vous voulez un autre moyen :-)

"ayy ceci stockera la ligne dans le tampon a

"ap Ceci mettra le contenu du tampon a au curseur.

Il y a beaucoup de variations à ce sujet.

"a5yy ceci stockera les 5 lignes dans le tampon a

voir http://www.vim.org/htmldoc/help.html pour plus de plaisir

38
Kwondri

yyp - souviens-toi avec "yippee!"

Plusieurs lignes avec un numéro entre les deux:

y7yp

37
theschmitzer

yyp - coller après

yyP - coller avant

22
yemu

Vous pouvez également essayer <C-x> <C-l>, qui répète la dernière ligne du mode insertion et affiche une fenêtre d’achèvement avec toutes les lignes. Cela fonctionne presque comme <C-p>

11
nikolavp

Une autre option serait d'aller avec:

nmap <C-d> mzyyp`z

vous donne l'avantage de conserver la position du curseur.

11
Rook

J'aime: Shift+v (pour sélectionner immédiatement toute la ligne et vous permettre de sélectionner d'autres lignes si vous le souhaitez), y, p

10
Gabe

Pour quelqu'un qui ne connaît pas vi, certaines réponses peuvent provoquer des phrases du type "coller ... après/avant" ligne actuelle".
C'est en fait "coller ... après/avant le curseur".

yy ou Y copier la ligne
ou
dd supprimer la ligne

puis

p coller le texte copié ou supprimé après le le curseur
ou
P coller le texte copié ou supprimé avant le le curseur


Pour plus de raccourcis clavier, vous pouvez visiter ce site: vi Liste complète des raccourcis clavier

10
Michael

1 gotcha: quand vous utilisez "p" pour mettre la ligne, il le met après la ligne sur laquelle se trouve votre curseur curseur vers le bas d'une ligne avant de mettre la nouvelle ligne.

3
cori

La valeur par défaut est yyp, mais je l’utilise depuis un an environ et l’adore:

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv

2
Chris Penner

Pour ceux qui commencent à apprendre vi, voici une bonne introduction à vi en répertoriant côte à côte les commandes vi associées aux mouvements de curseur et aux touches de raccourci typiques de l’éditeur d’interface graphique Windows. Il répertorie toutes les commandes de base, y compris yy (ligne de copie) et p (coller après) ou P(coller avant).

vi (Vim) pour les utilisateurs Windows

1
ap-osd

Je sais que je suis en retard à la fête, mais peu importe; J'ai ceci dans mon .vimrc:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

la commande :copy copie simplement la ligne sélectionnée ou la plage (toujours des lignes entières) en dessous du numéro de ligne indiqué en argument.

copy . copie cette ligne juste en dessous de cette ligne .

Et en mode visuel, il se transforme en '<,'> copy '> copie du début à la fin de la sélection jusqu'à la ligne située au-dessous de la fin de la sélection .

1
DarkWiiPlayer

Si vous souhaitez dupliquer une ligne et la coller tout de suite sous le texte, comme dans Sublime Ctrl+Shift+D, vous pouvez ensuite ajouter ceci à votre fichier .vimrc.

imap <S-C-d> <Esc>Yp

0
jedi

J'aime utiliser cette cartographie:

:nnoremap yp Yp

car il est cohérent d’utiliser à côté de la commande native YP.

0
yolenoyer