Dupliquer une ligne entière dans Vim
-
09-06-2019 - |
Question
Comment dupliquer une ligne entière dans Vim de la même manière que Ctrl + D dans IntelliJ IDEA / Resharper ou Ctrl + < kbd> Alt + & # 8593; / & # 8595; dans Eclipse?
La solution
y y ou Y pour copier la ligne
ou
d d pour supprimer (couper) la ligne
puis
p pour coller le texte copié ou supprimé après la ligne en cours
ou
P pour coller le texte copié ou supprimé avant la ligne en cours
Autres conseils
Mode normal: voir les autres réponses.
La méthode Ex :
-
:t.
va dupliquer la ligne, -
:t 7
le copiera après la ligne 7, -
:,+t0
va copier la ligne courante et la suivante au début du fichier (,+
est un synonyme pour la plage.,.+1
), -
:1,t$
copiera les lignes du début à la fin du curseur (1,
est un synonyme de la plage1,.
).
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 modèle & # 8220; foo & # 8221; à la fin du fichier. -
:+,$g/^\s*class\s\+\i\+/t.
va copier toutes les lignes suivantes du formulaireclass xxx
juste après le curseur.
Référence: :help range
, :help :t
, :help :g
, :help :m
et :help :v
YP
ou Yp
ou yyp
.
Ne devient pas plus simple que ça! En mode normal:
yy
puis déplacez-vous vers la ligne que vous souhaitez coller et
p
y y
tirera la ligne en cours sans la supprimer
d d
supprimera la ligne en cours
p
aura put
une ligne saisie par l'une des méthodes précédentes
Si vous voulez une autre façon: -)
"ayy
Ceci stockera la ligne dans le tampon a
"ap
Ceci placera le contenu du tampon "a5yy
au niveau du curseur.
Il existe de nombreuses variantes à ce sujet.
<=> ceci stockera les 5 lignes dans le tampon <=>
voir http://www.vim.org/htmldoc/help.html pour plus de plaisir
Faites ceci:
D'abord, y y pour copier la ligne en cours, puis p pour coller.
y y p - rappelez-vous-le avec & "yippee! &";
Plusieurs lignes avec un nombre entre les deux:
y 7 y p
y y p - coller après
y y P - coller avant
Vous pouvez également essayer < C-x > < C-l > qui répètera la dernière ligne du mode insertion et vous amènera une fenêtre d’achèvement avec toutes les lignes. Cela fonctionne presque comme & Lt; C-p & Gt;
Une autre option serait d'aller avec:
nmap <C-d> mzyyp`z
vous donne l'avantage de conserver la position du curseur.
Pour quelqu'un qui ne connaît pas vi, certaines réponses précédentes pourraient le tromper avec des phrases telles que & "coller ... après / avant ligne courante &
Il s’agit en fait de & "coller ... après / avant de curseur &";
y y ou Y pour copier la ligne
ou
d d pour 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 raccourcis clavier, vous pouvez visiter ce site: vi Liste complète des raccourcis clavier
j'aime bien: 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
1 gotcha: lorsque vous utilisez & "; p &"; pour mettre la ligne, il le met après la ligne sur laquelle se trouve votre curseur. Par conséquent, si vous souhaitez ajouter la ligne après la ligne que vous tirez, ne déplacez pas le curseur sur une ligne avant de placer la nouvelle ligne.
La valeur par défaut est y y p , mais je l'utilise depuis environ un an et j'adore:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
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 (lignes toujours entières) en dessous du numéro de ligne indiqué en argument.
En mode normal, cela permet de copy .
copier 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 en dessous de la fin de la sélection .
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).
Si vous souhaitez dupliquer une ligne et la coller immédiatement sous le courant, comme dans Sublime Ctrl + Maj + D , vous pouvez ensuite l'ajouter à votre .vimrc
fichier.
imap <S-C-d> <Esc>Yp
J'aime utiliser ce mappage:
:nnoremap yp Yp
car il est cohérent d’utiliser la commande YP
en natif.