cómo hacer una búsqueda inversa de búsqueda vim para todas las líneas sin texto

18

con grep puedo hacer un grep -v "mi búsqueda" para obtener todas las líneas sin "mi búsqueda"

con sed puedo sed '/ baz /! s / foo / bar / g' para encontrar texto de reemplazo en líneas sin baz

¿Hay alguna manera de hacer lo mismo vim? Y es posible pero sin la sintaxis "s ///". Usando solo la sintaxis de búsqueda "/".

nelaaro
fuente

Respuestas:

29
:g/pattern/

coincide con todas las líneas donde se encuentra el patrón.

:v/pattern/

hace lo contrario Ver :h globalpara más detalles.

Puedes usarlo así:

:v/pattern/norm Ipattern not found - <CR>

para anteponer "patrón no encontrado" a cada línea que no tenga "patrón" o

:v/pattern/s/nrettap/pattern

para reemplazar "nrettap" con "patrón" en cada línea que no tiene "patrón".

Ejemplos contribuidos, sí.

romainl
fuente
Yo lol'd en "Nrettap".
UncleZeiv
1

Uso de: v commandEdit El enfoque tradicional para encontrar líneas que no coinciden con un patrón es usar el comando : v :

:v/Warning/p

Un buen truco cuando se trabaja con un archivo de registro grande donde desea filtrar tantas líneas irrelevantes como sea posible antes de comenzar su búsqueda real es guardar el archivo con un nombre temporal y eliminar todas las líneas que no coinciden allí:

:sav junk.log
:v/warning/d

Ahora está editando un clon de su archivo original con todas las líneas que no coinciden con la "advertencia" eliminada y puede editarlo a voluntad.

Ref: https://vim.fandom.com/wiki/Search_for_lines_not_containing_pattern_and_other_helpful_searches

autoarranque
fuente