Lorsque je dois remplacer un mot par un autre que j'ai déjà tiré, j'utilise généralement un flux de travail qui me semble peu naturel:
Disons que j'ai ce texte:
foo bar buzz
Et je veux tirer foo
et remplacer bar
par ce que j'ai tiré auparavant.
Après avoir tiré foo
, je vois les options suivantes:
Option 1
Placez le curseur sur
bar
avecw
Mettre
foo
devantbar
avecP
Placez le curseur sur le
b
restebar
et supprimez le mot avecde
Option 2
Placez le curseur sur la barre avec
w
Utilisez
de
pour effacerbar
Mettre le contenu du registre 0 avec
"0P
(depuis que j'ai effacébar
,foo
n'est plus accessible avec un simplep
)
Les deux façons me semblent trop compliquées et je suis sûr qu'il existe un moyen plus efficace de réaliser cette action, mais je ne trouve pas comment. Cette idée serait de combiner les actions de suppression et de mise en une seule, ou du moins d'éviter de conserver le mot supprimé dans le registre de coupure afin que je puisse mettre le mot souhaité avec un simple p
.
Je connais également le mode de remplacement déclenché R
mais il ne permet pas de mettre ce qui a été retiré.
TL; DR : Comment remplacer un mot par le contenu du registre yank?
la source
J'ai trouvé une autre façon de le faire, elle est un peu similaire à l'option 2 mais elle a l'avantage de ne pas gâcher l'état des registres.
L'idée est d'utiliser le " registre des trous noirs ": ce registre est accessible via
"_
et a la particularité que vous pouvez y écrire mais pas le lire, donc comme un trou noir ce registre fait totalement disparaître tout ce qui y entre. Ici, nous pouvons l'utiliser afin defoo
rester dans le registre yank même après labar
suppression.Avec cette solution, le flux de travail après un coup sec
foo
serait:bar
avecW
(ou tout mot nécessaire bien sûr)bar
avec"_de
foo
partir du registre yank avecP
. Le registre yank contient toujoursfoo
depuisbar
est entré dans le trou noir.Je ne suis pas sûr que ce soit une meilleure solution que celle de @ Carpersmoker ( en termes de victoires de vimgolf @Carpetsmoker ) mais je ne connaissais pas le registre des trous noirs et je pensais que certains pourraient être intéressés de le savoir.
la source
Allez au début de "foo". Appuyez sur
yiw
. Cela arrache le mot intérieur.Allez dans "bar" en appuyant sur la lettre
w
. Ensuite, sélectionnez-le et tirez:viw"0p
J'utilise
ciw
etyiw
beaucoup.la source
iw
est intéressante mais votre solution est en fait la même que celle de @ CarpetSmoker: sélectionner visuellement le deuxième mot et mettre le premier. Je pense également que votre solution fonctionnerait avec un simplep
au lieu d'utiliser un"0
registre.Lorsque le curseur se trouve n'importe où sur le mot,
yiw
- arrachez le mot et enregistrez-le dans le0
registre.Accédez au mot cible à remplacer
ciw
supprimera le mot et vous mettra en mode insertion.ctrl-r
. Un"
message apparaîtra demandant le registre à invoquer.0
va coller le mot tiré.Les mots tirés sont (normalement!) Stockés dans le
0
registre. Voir:registers
pour afficher les tampons stockés. Cela peut sembler une procédure longue, à mon humble avis, cela ouvre la porte à des astuces de registre beaucoup plus sophistiquées.la source