¿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?

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.