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)


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.


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

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

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.