VIM ve coincidencias de expresiones regulares a medida que escribe


8

Si escribo /regex, el cursor salta temporalmente a la primera coincidencia y se resaltan todas las coincidencias. Esto se actualiza a medida que escribo. ¿Es posible obtener este comportamiento cuando me estoy preparando para hacer una sustitución? Por ejemplo, cuando estoy trabajando en una expresión regular complicada :%s/\<regex\>/, me gustaría saber qué coincide antes de apretar el gatillo y cambiar todo. ¿Alguna manera de hacerlo?


Sería bueno que funcionara de la manera en que funciona con la búsqueda: resaltando lo que actualmente coincide. ¿Encontraste la mejor manera de hacerlo?
Anton Daneyko

Respuestas:


12

Para comenzar, escriba su búsqueda usando / (o ? ), Lo que le permitirá ajustar su expresión regular (ya que está usando incsearch)

Una vez que lo tenga todo bien, puede usar el patrón de búsqueda anterior (el que acaba de usar) en el comando sustituto usando dos separadores para el elemento 'buscar':

/elephant                       " find the next elephant
:%s//rhino/gc                   " make then all rhinos!

Por supuesto, puede usar selecciones y rangos, como de costumbre.

:1,15s,,cougar,g
:'<,'>s::tiger:

+1 por enseñarme sobres//
Steven Lu

2

Una opción es que puede tener una bandera de confirmación c.

:%s;regex;replacement;gc

:h s_flags:

[c] Confirm each substitution.  Vim highlights the matching string.  You can type:              
        'y'     to substitute this match
        'l'     to substitute this match and then quit ("last")
        'n'     to skip this match
        <Esc>   to quit substituting
        'a'     to substitute this and all remaining matches
        'q'     to quit substituting

También puede probar el grepcomando para ver la salida filtrada y el archivo original resaltado.

:g/re/p o :g/re/


Me gusta, pero todavía requiere que complete la expresión regular antes de ver qué pasa si algo coincide.
John Berryman

0

Bueno, la forma corta de ver con qué coincidirá su expresión regular es haciendo una búsqueda con el /uso de la expresión regular deseada. Saltará al primer partido y lo marcará mientras lo está escribiendo. Pruébalo vim, no te decepcionará.


Es cierto, aunque eso es lo que dije en la pregunta. Deseo que se actualice ya que me estoy preparando para sustituir. Con su solución, tengo que probar la expresión regular y luego copiarla (¿cómo?) Y luego usarla en una sustitución. Eso no es lo suficientemente bueno.
John Berryman
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.