Al usar grep desde VIM, ¿cómo saltar a los resultados?


32

Cuando uso el complemento grep para VIM, puedo buscar en el directorio actual todas las apariciones de una cadena dentro de un conjunto de archivos, como este:

:grep Ryan *.txt

Esto genera algo como esto:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Si presiono enter, solo me lleva de vuelta a mi editor. Lo que realmente quiero hacer es poder abrir uno de esos archivos y saltar al lugar donde se encontró la cadena. ¿Hay alguna forma de hacer esto? La 1 of 3parte me hace pensar que hay una forma de tabular los resultados, pero no sé qué comandos están disponibles para mí. ¿Alguien puede arrojar algo de luz sobre esto?

Respuestas:


34

Cuando presiona ENTRAR, debería estar mirando la línea 3 del archivo1.txt. Para saltar al siguiente partido, ejecuta :cn; para saltar al partido anterior, ejecutar :cp. La ejecución :copenabrirá una ventana que contiene la lista de coincidencias. Mueva el cursor a la coincidencia deseada y presione ENTER para saltar a esa coincidencia.

Para más información sobre el uso :grep, vea

:help grep
:help quickfix.txt

Escribir :cny :cpavanzar y retroceder en la lista de soluciones rápidas puede ser incómodo, por lo que utilizo estas asignaciones:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

Además, el :grepcomando no es un complemento; Es parte de Vim.


Gran respuesta, gracias! Por cierto, ¿puedes hacer una búsqueda recursiva a través de carpetas con vim grep?
Marplesoft

Mientras esté ejecutando en un sistema Unix, puede agregar cualquier argumento a Vim :grepque agregaría a un grepcomando ejecutado desde el shell. Por lo tanto, puede hacer una búsqueda recursiva a través de todos los archivos .txt en y debajo del directorio actual con :grep -R --include=*.txt Ryan .. También puede realizar una búsqueda recursiva utilizando el :vimgrepcomando de Vim , pero los argumentos son diferentes y rara vez lo uso porque es más lento que :grep.
garyjohn
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.