¿Cómo hago un bloque de búsqueda y reemplazo con Vim?

8

Tengo texto en Vim

  1. golpear Ctrl+Va poner vim en modo de bloque
  2. resaltar el texto que quiero
  3. escriba :esto le da el indicador de este:'<,'>
  4. Agrego a la solicitud mi expresión regular s/ /*/g. Esto me deja con :'<,'>s/ /*/gy el texto resaltado
  5. Presiono enter

Desafortunadamente, opera en toda la línea para el bloque, no solo el bloque. ¿Hay alguna forma de hacer una búsqueda de bloque y reemplazar?

Evan Carroll
fuente

Respuestas:

12

Cuando se usan comandos ex en modo de bloque visual :, siempre operan en toda la línea. Hay dos formas de evitar esto:

  1. El \%Vátomo solo coincidirá dentro del área visual. Tratar

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

    Ver :help %V

  2. Hay versiones visuales especiales de algunos comandos, live v_s o v_r. Ver:help visual-operators
DaveParillo
fuente
No puedo entender cómo hacer que esto funcione
Evan Carroll
el átomo \% V restringirá un patrón para que coincida solo dentro de la selección visual. Prueba:'<,'>s/\%V /*/g
DaveParillo
1
Esta página tiene un buen resumen de lo que está tratando de hacer. vim.wikia.com/wiki/Search_and_replace_in_a_visual_selection
DaveParillo