Hay varias formas de hacerlo.
Directorio actual interno
Si desea realizar la búsqueda / reemplazo en un árbol de proyecto, puede usar la lista de argumentos de Vim .
Simplemente abra Vim y luego use el :args
comando para completar la lista de argumentos. Puede pasar varios nombres de archivo o incluso globos.
Por ejemplo, :args **/*.rb
buscará de forma recursiva el directorio actual en busca de archivos ruby. Tenga en cuenta que esto también es como abrir Vim con vim **/*.rb
. Incluso puede usar el find
comando del shell para obtener una lista de todos los archivos en el directorio actual ejecutando:
:args `find . -type f`
Puede ver la lista de argumentos actuales ejecutándose :args
solo. Si desea agregar o eliminar archivos de la lista, puede usar :argadd
los :argdelete
comandos o respectivamente.
Una vez que esté satisfecho con la lista, ahora puede usar el poderoso :argdo
comando de Vim que ejecuta un comando para cada archivo en la lista de argumentos::argdo %s/search/replace/g
Aquí hay algunos consejos para buscar (basados en algunos de los comentarios):
- Use un límite de palabra si desea buscar "foo" pero no "foo_bar". Use las construcciones
\<
y \>
alrededor del patrón de búsqueda de la siguiente manera::argdo %s/\<search\>/foobar/g
- Use una
/c
marca de búsqueda si desea que Vim solicite confirmación antes de reemplazar un término de búsqueda.
- Use una
/e
marca de búsqueda si desea omitir los errores de "patrón no encontrado".
- También puede optar por guardar el archivo después de realizar la búsqueda:
:argdo %s/search/replace/g | update
. Aquí, :update
se usa porque solo guardará el archivo si ha cambiado.
Tampones abiertos
Si ya tiene búferes abiertos en los que desea realizar la búsqueda / reemplazo, puede usar :bufdo
, que ejecuta un comando para cada archivo en su lista de búferes ( :ls
).
El comando es muy similar a :argdo
: :bufdo %s/search/replace/g
Similar a :argdo
y :bufdo
, hay :windo
y :tabdo
que actúan en ventanas y pestañas respectivamente. Se usan con menos frecuencia pero aún son útiles para saber.
/c
bandera para confirmar las sustituciones.