Comment faire une recherche et remplacement de bloc avec Vim?

8

J'ai du texte dans Vim

  1. appuyez Ctrl+Vpour mettre VIm en mode bloc
  2. mettez en surbrillance le texte que je veux
  3. tapez :cela donne l'invite de cette:'<,'>
  4. J'ajoute à l'invite mon expression régulière s/ /*/g. Cela me laisse avec :'<,'>s/ /*/get le texte en surbrillance
  5. Je frappe entrer

Malheureusement, il fonctionne sur toute la ligne du bloc, pas seulement sur le bloc. Existe-t-il de toute façon une recherche de bloc et un remplacement?

Evan Carroll
la source

Réponses:

12

Lorsque vous utilisez des commandes ex en mode bloc visuel :, elles fonctionnent toujours sur toute la ligne. Il y a deux façons de contourner cela:

  1. L' \%Vatome correspondra uniquement à l'intérieur de la zone visuelle. Essayer

    :'<,'>s/\%V /*/g
    

    Voir :help %V

  2. Il existe des versions visuelles spéciales de certaines commandes, v_s en direct ou v_r. Voir:help visual-operators
DaveParillo
la source
Je n'arrive pas à comprendre comment le faire fonctionner
Evan Carroll
l'atome \% V restreindra un motif afin qu'il ne corresponde qu'à l'intérieur de la sélection visuelle. Essayez:'<,'>s/\%V /*/g
DaveParillo
1
Cette page contient un bon résumé de ce que vous essayez de faire. vim.wikia.com/wiki/Search_and_replace_in_a_visual_selection
DaveParillo