Comment remplacer le texte entre () par du texte précédemment tiré?

9

Supposons que j'ai le texte Fnordtiré avant et que mon curseur se trouve sur Bla 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)
k0pernikus
la source
1
@Rich La question fournie couvre le cas plus général de remplacement d'un mot tiré. Je pense que cette question est un peu plus précise et n'attire pas les mêmes réponses.
k0pernikus
Protip: Le 0registre contiendra le dernier texte tiré. :h quote0
Peter Rincker
1
La même idée de la réponse acceptée à la question mentionnée peut être appliquée ici. Avec le curseur entre parenthèses, appuyez simplement sur vi)p. C'est la même chose que dans cette réponse, juste avec l' i)objet texte au lieu de l' wobjet texte,
EvergreenTree
1
@ k0pernikus Je crains que nous devions accepter d'être en désaccord sur ce point. Pour moi, la partie importante des deux questions est le remplacement, et non l'objet texte utilisé pour l'appliquer.
Rich

Réponses:

13

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), pcolle Fnord dessus.

Cependant, cela ramènera Baz dans le registre après le collage, ce qui pourrait ne pas être ce que vous voulez.

Alex
la source
10

Sauf si vous spécifiez un registre, p(ou P) 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 "0utilisés pour les extraits ou "1pour les suppressions / modifications. Voir registres .

Si le dernier texte a été retiré, yvous pouvez le coller à partir du 0registre avec "0P. S'il a été supprimé, vous pouvez y accéder avec le 2registre avec "2P( "1est maintenant Baz).

Alternativement, vous pouvez éviter de jouer avec vos registres et de supprimer le registre blackhole"_ :

"_di(P
Steve
la source
3

Si l'installation de plugins est une option, vous pouvez utiliser yankstack.vim . Ensuite, vous pouvez conserver votre flux de travail actuel:

Actuellement, je fais souvent l'erreur en faisant:

  • di (aka "supprimer à l'intérieur ()"
  • MAJ + P
  • Alt + p - revenir à la position précédente
mMontu
la source
1

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

Christian Brabandt
la source