En un archivo largo, me gustaría buscar un patrón que coincida con aproximadamente 200 líneas más o menos. Las líneas coincidentes están en lugares aleatorios en el archivo.
Cuando una línea coincide, solo la línea en sí es relevante, sin contexto arriba o abajo.
Normalmente, buscaría /
y saltaría a través de los partidos con n
.
Pero eso significa que solo hay una o dos líneas relevantes en la pantalla a la vez.
¿Hay alguna manera de ocultar todas las líneas que no coinciden, mientras revisa la lista de líneas de resultados?
Un enfoque de fuerza bruta sería eliminar todas las líneas que no coinciden, y deshacer esa eliminación más tarde. Pero eso es feo de varias maneras, incluso si no terminara en un deshacer persistente ...
:vimgrep
se puede abreviar a:vim
:ccl[ose]
o, sin embargo, normalmente cierra un búfer (por ejemplo, cambie a él y:bd
). Puede volver a abrir el búfer de corrección rápida ejecutando:cw[indow]
nuevamente, y usará sus últimos resultados de vimgrep.Puede enumerar todas las líneas coincidentes con
(El
:print
comando se puede omitir; es el valor predeterminado para:g
).fuente
g/REgexp/p
) ... El problema es que no puedes saltar fácilmente a uno de los partidos, aunque ...g
. Supongo que es un patrón global. Por lo general, hago búsquedas de VI con una barra inclinada/pattern
y esto encontraría todos los sucesos. Uno puede navegar hacia ellos presionando la letran
:g[lobal]
que toma un patrón como argumento. Encontrará todos los detalles en:help :global
.Puede usar las opciones
foldmethod
yfoldexpr
para plegar las líneas irrelevantes.Después de buscar, la última búsqueda se almacena en el
@/
registro. Por lo tanto, puede plegar fácilmente todo lo que no coincida de esta manera (solo para coincidencias de una línea):Se pueden encontrar métodos más avanzados, como agregar múltiples niveles de plegado para líneas de contexto que puede mostrar u ocultar, o hacer coincidir varias líneas, en el Wiki de Vim Tips .
fuente
set foldlevel=0
necesario? Pero tal vez eso es lo predeterminado.:tab sp
obtengo una nueva vista desechable en el archivo. Luego, regresar es tan simple como:close
cualquier otra forma de eliminar la pestaña.Si el orden no importa, simplemente mueve las líneas.
Para más ayuda ver:
fuente
:g/pat/m$
(mover las líneas coincidentes hasta el final) también está bien,[d] elija todas las líneas, no (!) patrones coincidentes:
o incluso más simple (gracias por los comentarios de 'B Layer'):
fuente
:v
lugar de:g!
. (¡No recuerdo la última vez que vi el último usado, TBH!)Si desea enumerar todas las líneas coincidentes (como en mi otra respuesta), y luego saltar a una coincidencia particular, mi complemento FindOccurrence proporciona una
[/
asignación para eso (y[n
para el último patrón de búsqueda, en lugar de buscar una).[/pattern
enumera como:g/pattern
, pero luego pide el número del partido al que saltar.fuente
Otra forma es usar
:h :ilist
, lo uso para obtener una visión general de la página de manual. su resultado se ve así:Aquí hay una pequeña función que le permite elegir ir a la línea de resultados por índice:
Se puede usar así:
fuente