2010-02-03 26 views
26

Una tarea de programación común para mí, en vim es:¿Cómo buscar en un directorio de archivos en vim?

:s/some pattern/ 

hacer algún trabajo

n # encuentra la siguiente entrada

hacer algún trabajo

n # encuentra la siguiente entrada ..

Ahora, s/.... solo busca en el archivo actual.

¿Hay alguna manera de que pueda hacer esto, pero busque en un directorio de archivos? Decir hacer "s /..../" sobre todos los archivos en subdirectoires de pwd que termina en .hpp de .cpp?

Gracias!

+0

Es solo una especie de solución, así que no la estoy publicando como respuesta: puede abrir todos los archivos en una sesión de vim para que pueda: n a la siguiente, luego grabe una macro que sí lo hace: s/.../y: ny ejecuta la macro un número suficientemente grande de veces. (ejecutar la macro con demasiada frecuencia no hará ningún daño, ya que la sustitución simplemente se intentará una y otra vez para el último archivo) – Frank

Respuesta

26

Puede simplemente usar el :grep command: o para una integración más completa de las herramientas de búsqueda, use el grep.vim extension.

Simplemente escriba :help grep para obtener una buena documentación de lo que está disponible de fábrica en Vim. El uso de :grep foo *.?pp debe hacer lo que desee. Esto abrirá el QuickFix list, al igual que el que usa :make, lo que permite saltar a las ocurrencias encontradas.

3
:help windo 
:help bufdo 
man find 
man xargs 

find ./start/point -iname "*.cpp" -print0 | xargs -0 vim 
:bufdo s/baar/foo/gc 
:wall 
:qall 

gc "global confirm", wall (write all), qall (quite all). Para ver la lista de archivos: ls salto superior al siguiente archivo: wn (escriba a continuación) o: bn (buffer siguiente). Por cierto, xargs administra grandes cantidades de archivos en la memoria para entregarlos a vim sin errores.

Cuestiones relacionadas