Quelle est la meilleure façon de remplacer plusieurs lignes par le contenu du presse-papiers?
Le problème que j'ai, c'est que lorsque je tire une ligne et la colle sur une autre ligne, le "yank" est remplacé par la ligne que je viens de remplacer. Maintenant, si je veux remplacer une autre ligne par la même ligne, je dois remonter et la retirer à nouveau.
Il doit y avoir une meilleure façon de faire cela.
vnoremap
). Le fichier d'aide de Vimversion7.txt
indique que xmap et smap sont apparus dans cette version.xnoremap
nivnoremap
fonctionne"0
devrait avoir le contenu de votre yank. C'est un peu plus fastidieux à taper, mais"0p
vous devez faire ce que vous voulez.Sinon, ne sélectionnez pas et ne remplacez pas les anciennes lignes à l'avant. Si vous trouvez ces lignes avec une recherche, appuyez simplement à
n.
plusieurs reprises (après une initialep
), puis lorsqu'elles sont toutes collées, faites-lendd
suivi d'autant den.
s que nécessaire.Le plus gros changement mental que j'ai dû faire lors du passage à Vim est de comprendre comment appliquer les modifications de groupe de manière séquentielle. C'est-à-dire que plutôt que de faire un tas de modifications sur une ligne puis de faire un tas des mêmes modifications sur une autre ligne, je ferai le premier montage sur un tas de lignes (en utilisant
.
à grand effet), puis le deuxième montage sur un tas de lignes, etc. Alternativement, l'utilisation de macros peut aider car elles sont fantastiques, mais parfois un peu plus fastidieuses pour travailler correctement avec des changements "complexes".la source
:%s/.../.../gc
les commandes de confirmation de type pourrait être plus proche de ce que vous voulez5@m
m
xnoremap p "0p
dans mon ~ / .vimrcJ'utilise souvent un autre registre, copiez la ligne dont vous avez besoin dans un registre nommé
"ay
, puis collez à partir de là"ap
la source
Lorsque vous collez une sélection dans Vim, il remplacera le registre par défaut par le contenu de la sélection. Si le fait de coller sur une sélection efface le contenu du registre du presse-papiers, il est fort probable que vous ayez la ligne suivante dans votre .vimrc
Une option consiste à supprimer cela et à utiliser le registre du presse-papiers explicite
"+
Une autre option consiste à utiliser l'un des autres registres explicitement nommés (az). Après la première pâte, retirez la ligne
"c
par exemple, puis utilisez"cp
pour coller à partir de là.la source
utilisez
np
oùn
est le nombre de fois que vous voulez coller les lignes, par exemple3p
collera 3 lignes.la source
Au lieu d'utiliser le copier / coller, il est souvent préférable d'utiliser une commande d'objet texte telle que
ciw
pour changer le mot interne. Cette méthode a l'avantage d'être facilement répétable à l'aide de la.
commande de répétition.yiw
Coupez le mot intérieur (copiez le mot sous le curseur, dites «premier»).ciw<C-r>0
Changez «deuxième», en le remplaçant par «premier» (est Ctrl-R)..
Remplacez "troisième" par "premier".la source
ciw<C-r>0
ne fonctionne pas dans mon cas.ciw
passe au mode d'insertion où<C-r>
devient inutile. Y a-t-il une explication simple à cela? Cela pourrait-il avoir à voir avec l'éditeur de texte (je n'utilise pas pur VIM mais les liaisons de clavier VIM dans RStudio)<C-r>
est destiné à être utilisé en mode insertion, car c'est la façon dont vous collez à partir d'un registre sans quitter le mode insertion - dans Vim, c'est-à-dire; Je ne suis pas familier avec RStudio mais je suppose que vous avez raison et qu'ils n'ont pas implémenté cette liaison de clé particulière.