Supposons que j'ai le texte Fnord
tiré avant et que mon curseur se trouve sur B
la ligne:
M:mock(Baz)
Comment puis-je changer le texte entre () avec le texte précédemment tiré?
Actuellement, je fais souvent l'erreur en faisant:
di(
aka "supprimer l'intérieur ()"- MAJ + P
ce qui me laisse à nouveau le texte exact, car le texte supprimé sera déplacé dans le registre.
Je veux avoir:
M:mock(Fnord)
cut-copy-paste
normal-mode
register
k0pernikus
la source
la source
0
registre contiendra le dernier texte tiré.:h quote0
vi)p
. C'est la même chose que dans cette réponse, juste avec l'i)
objet texte au lieu de l'w
objet texte,Réponses:
Vous pouvez utiliser la sélection visuelle pour sélectionner le texte à remplacer, puis le coller comme suit:
vi(p
vi(
sélectionne Baz (car il est placé entre parenthèses),p
colle Fnord dessus.Cependant, cela ramènera Baz dans le registre après le collage, ce qui pourrait ne pas être ce que vous voulez.
la source
Sauf si vous spécifiez un registre,
p
(ouP
) utilisera le dernier registre rempli. Le registre sans nom""
contient le texte le plus récemment extrait ou supprimé (sauf si un autre registre a été spécifié, par exemple avec"ay
), mais ceux-ci sont également"0
utilisés pour les extraits ou"1
pour les suppressions / modifications. Voir registres .Si le dernier texte a été retiré,
y
vous pouvez le coller à partir du0
registre avec"0P
. S'il a été supprimé, vous pouvez y accéder avec le2
registre avec"2P
("1
est maintenantBaz
).Alternativement, vous pouvez éviter de jouer avec vos registres et de supprimer le registre blackhole
"_
:la source
Si l'installation de plugins est une option, vous pouvez utiliser yankstack.vim . Ensuite, vous pouvez conserver votre flux de travail actuel:
la source
En supposant que "Fnord" est dans le registre que vous pouvez faire (avec le curseur au début de la ligne)
f(ci(<c-r>a
la source