¿Es posible mostrar / ocultar todas las líneas coincidentes en vi o Vim? No resaltar sino mostrar solo esas líneas.
Por ejemplo, tengo un texto con la palabra la palabra ERROR
. ¿Cómo hago que muestre solo líneas que contienen ERROR
y cómo mostrar solo líneas sin ERROR
?
¿Existe una solución sin eliminar todas las líneas coincidentes y luego simplemente deshacerlo?
Respuestas:
¿Conoce el
:global
comando? ¿Hace esto lo que quieres?y por lo contrario:
o equivalente:
fuente
g<
para ver de nuevo, o@:
si no has ejecutado y comandos.Otro enfoque, dependiendo de su caso de uso, sería usar vimgrep y sus resultados en quickfix . Puede hacer lo siguiente:
:vimgrep pattern %
buscará el archivo actual y lo llevará al primer resultado de búsqueda. Más importante aún, también coloca los resultados en la "lista de arreglos rápidos".:copen
luego abrirá la lista de arreglos rápidos en una ventana separada de arreglos rápidos. Entonces tendrá una ventana separada con todas las líneas de su último vimgrep. Dentro de la ventana de corrección rápida, puede presionar Enter o hacer doble clic en una línea para saltar a la línea correspondiente en su archivo original.:colder
le permitirá volver a las listas de correcciones rápidas más antiguas (resultados de vimgrep más antiguos). Y:cnewer
avanza a resultados de búsqueda más nuevos.Tenga en cuenta que la lista de correcciones rápidas también se actualiza cuando se ejecuta
:make
(por eso se llama corrección rápida para corregir errores). Debido a esto, también existe una alternativa a la lista de arreglos rápidos llamada "lista de ubicaciones". Para usarlo en lugar de utilizar:lvimgrep
, a continuación, utilizar comandos l-prefijado en lugar de comandos c-prefijo -:lopen
,:lolder
,:lnewer
.Por supuesto, hay mucho más que puede hacer. Consulte
:help quickfix
para obtener más información.PD: Dijiste que no querías un enfoque que borra líneas y luego las deshace. Pero ya que marcó
g/ERROR
como la respuesta, pensé en señalar que una forma rápida y sucia es hacerlog!/ERROR/d
. A continuación, puede deshacerlo fácilmente usandou
. También para su información, puede hacer:set hlsearch
para resaltar patrones que coincidan con:g
comandos.fuente
Puedes usar
para imprimir todas las líneas con ERROR
También hay un complemento de Vim que vi muchas veces pero que no usé: foldsearch: líneas de pliegue que no coinciden con un patrón determinado
fuente
La mejor forma de hacer esto es->
Esto abrirá la lista de coincidencias para su palabra clave y también mostrará solo las líneas coincidentes en la ventana de corrección rápida.
Reemplace% con la ruta al archivo si no está considerando el archivo actual.
fuente
:vimgrep /something/g % | copen
funciona increíble. También:g/<pattern>/d
se puede utilizar para eliminar líneas con el patrón.fuente
en caso de que lo use
fzf
, puede usar::Lines
en todos los archivos abiertos:BLines
solo en búfer abierto:Rg [pattern]
utilizandoripgrep
fuente
Alguna forma sucia hackish de hacer esto:
fuente
Probablemente te refieres al comando en menos vi vim & / patrón / que muestra líneas que contienen / patrón / (como grep).
fuente