Digamos que tengo una función, llamada StripWhitespace
.
Puedo ejecutarlo en un solo archivo abriendo el archivo y ejecutándolo :StripWhitespace
.
¿Cómo puedo ejecutar automáticamente esa función en una carpeta de archivos y guardar los resultados a medida que avanzo?
macro
multiple-files
rana cuadrada
fuente
fuente
Respuestas:
Puede usar el
-c
argumento para ejecutar un comando al inicio, desdevim(1)
:Ejemplo:
Para salir después, agregue
| :wqa
:fuente
Si ya está en Vim, puede usar los comandos
:argdo
o:bufdo
para ejecutar un comando en cada elemento de la lista de argumentos o la lista de búfer, respectivamente.Por ejemplo, para ejecutar un
:
comando en cada archivo en la lista de argumentos:O para invocar una función de cada archivo en la lista de búfer:
O para ejecutar macro
q
en cada archivo en la lista de argumentos:A continuación, puede guardar todos los búferes modificados con
:wall
, o guardar todos y salir de Vim con:wqall
.Si desea escribir los archivos a medida que avanza, puede agregar una llamada a
:update
:En primer lugar, hay varias formas de obtener los archivos en Vim, que incluyen:
vim *
(esto agrega todos los archivos a la lista de argumentos),:args
comando (que admite comodines y expresiones de retroceso) para completar la lista de argumentos o el:argadd
comando para agregarle archivos,:e
,:Ex
o un plugin para abrir ficheros.fuente
'hidden'
ser configurado; (2) el: update
orden es una ligera mejora respecto:w
, ya que sólo escribe si se ha realizado un cambio, por lo que:bufdo update
o:argdo update
escribirá todos los tampones o argumentos modificados.update
. Pensé en mencionarhidden
cuando estaba escribiendo la respuesta, pero decidí no hacerlo porque no quería complicarla demasiado. Sin embargo, en la reflexión, debería estar allí. Actualizaré la respuesta para incluir ambas sugerencias actualmente.:wall
, que también tiene la ventaja de no recorrer los buffers y alejarte de donde empezaste. Supongo:argdo update
que todavía es una historia diferente, tal vez no quieras escribir en buffers que no están en tu lista de argumentos.