Dupliquer une ligne entière dans Vim

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

1344
demandé sur Burçin 2008-09-16 19:02:52

19 réponses

y y ou Y pour copier la ligne

ou

d d supprimer (couper) la ligne

puis

p pour coller le texte copié ou supprimé après la ligne courante

ou

P coller le texte copié ou supprimé avant la ligne courante

2304
répondu Mark Biek 2016-12-30 13:57:30

mode Normal: voir les autres réponses.

Le Ex :

  • :t. fera double emploi avec la ligne,
  • :t 7 , vous les copiez, après la ligne 7,
  • :,+t0 copiera la ligne courante et la ligne suivante au début du fichier ( ,+ est un synonyme pour la gamme .,.+1 ),
  • :1,t$ copie les lignes de début jusqu'à la position du curseur jusqu'à la fin ( 1, est synonyme de la gamme 1,. ).

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

cela peut être vraiment puissant si vous le combinez avec :g ou :v :

  • :v/foo/m$ déplace toutes les lignes ne correspondant pas au motif " foo " à la fin du fichier.
  • :+,$g/^\s*class\s\+\i\+/t. copie 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

361
répondu Benoit 2013-06-18 11:43:11

YP ou Yp ou yyp .

275
répondu Linulin 2012-04-17 15:06:48

copy and paste in vim

N'est pas plus simple que ça! À partir du mode normal:

yy

puis passer à la ligne que vous voulez coller à et

p
218
répondu Adam 2014-02-07 22:20:41

y y

tirera la ligne courante sans la supprimer

d d

supprimera la ligne courante

p

sera put une ligne saisi par l'une des méthodes précédentes

46
répondu pjz 2015-04-20 10:21:45

Si vous voulez une autre façon :-)

"ayy cela stockera la ligne dans le tampon a

"ap cela placera le contenu du tampon a sur le curseur.

il y a de nombreuses variantes à cela.

"a5yy cela stockera les 5 lignes dans le tampon a

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

38
répondu Kwondri 2011-08-01 03:09:12

y y p - rappelez-vous il avec "youpi!"

lignes multiples avec un numéro entre:

y 7 y p

36
répondu theschmitzer 2017-09-27 08:23:01

Faites ceci:

Première", 151930920" y y pour copier la ligne courante, et puis p pour coller.

33
répondu Eric Z Beard 2015-04-20 10:22:40

y y p - pâte après

y y P - pâte avant

19
répondu yemu 2017-10-03 08:47:27

vous pouvez aussi essayer qui répétera la dernière ligne du mode insert et vous apportera une fenêtre de completion avec toutes les lignes. Il fonctionne presque comme < C-p>

11
répondu 2008-09-18 20:32:52

une Autre option serait d'aller avec:

nmap <C-d> mzyyp`z

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

11
répondu Rook 2009-07-14 04:37:04

pour quelqu'un qui ne connaît pas vi, certaines réponses d'en haut pourraient l'induire en erreur avec des phrases comme "coller ... après / avant ligne courante ".

C'est en fait "coller ... après / avant curseur ".



y y ou Y pour copier la ligne

ou

d d supprimer la ligne

puis

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

ou

P pour coller le texte copié ou supprimé avant le curseur



Pour plus de liens clés, vous pouvez visiter ce site: vi liste complète des liens clés

10
répondu Michael 2016-05-12 15:07:02

j'aime: Shift + v (pour sélectionner la ligne entière immédiatement et vous laisser sélectionner d'autres lignes si vous voulez), y, p

10
répondu Xavier Guihot 2018-03-30 07:29:24

1 gotcha: quand vous utilisez " p "pour mettre la ligne, il le met après la ligne sur laquelle votre curseur est, donc si vous voulez ajouter la ligne après la ligne que vous tirez, ne pas déplacer le curseur sur une ligne avant de mettre la nouvelle ligne.

3
répondu cori 2008-09-16 15:06:45

pour ceux qui commencent à apprendre vi, voici une bonne introduction à vi en listing côte à côte des commandes vi à l'éditeur d'interface graphique typique déplacement du curseur Windows et raccourci clés. Il Liste toutes les commandes de base dont yy (ligne de copie) et P (coller après) ou P (coller avant).

vi (Vim) pour les utilisateurs de Windows

1
répondu ap-osd 2016-02-10 13:23:48

par Défaut est y y p , mais j'ai été en utilisant cette nouvelle liaison pour un an ou deux et l'amour:

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

1
répondu Chris Penner 2017-10-03 11:40:05

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 gamme (toujours des lignes entières) au-dessous du numéro de ligne indiqué comme argument.

en mode normal ce que cela fait est copy . copiez cette ligne juste au-dessous de cette ligne .

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

1
répondu DarkWiiPlayer 2018-04-13 07:26:23

si vous souhaitez dupliquer une ligne et la coller immédiatement au-dessous de l'actuel comme, juste comme dans Sublime Ctrl + Shift + D , alors vous pouvez ajouter cela à votre fichier .vimrc .

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

0
répondu jedi 2018-03-15 17:14:21

j'aime utiliser ce mapping:

:nnoremap yp Yp

parce qu'il le rend cohérent à utiliser à côté de la commande native YP .

0
répondu yolenoyer 2018-04-11 16:34:29