El rastreador de errores de Gnats tiene un comando (edit-pr) que abre un ticket en $ EDITOR. Mi $ EDITOR es VIM, y cuando este comando abre el ticket en $ EDITOR, me gustaría realizar automáticamente algunas ediciones con secuencia de comandos sin tener que presionar teclas adicionales.
¿Hay alguna manera de escribir un script VIM que se pueda ejecutar de manera no interactiva como esta?
Aunque ya haya recibido una respuesta a su pregunta, otros pueden encontrar esto útil.
Los comandos Vim también se pueden especificar en un archivo que se ejecuta con la
-s
opción:Ejemplo:
Esto usará Vim para sangrar el contenido del archivo, guardar y salir.
fuente
Los comandos de Vim se pueden especificar en la línea de comandos cuando ejecuta el programa de esta manera:
Puede seguir agregando comandos agregando
"+[cmd]"
argumentos. Puede terminar allí y el editor se abrirá, ejecutará esos comandos y esperará o usted, o puede agregar un"+:wq"
para guardar y cerrar el archivo.También puede escribir un script usando la sintaxis vimscript y envolverlo en una función para llamar cuando se abra el archivo o en un script separado para importar y aplicar al búfer usando la sintaxis anterior.
fuente
Para ejecutar vim modo no interactivo, puede utilizar cualquiera
+{command}
/-c {command}
o-s
parámetro que le permitirá ejecutar los comandos de vim después de que el primer archivo que se ha leído.Verifique algunos ejemplos a continuación.
El comando puede lograr una entrada y salida estándar simple mediante tuberías:
Para editar un archivo y guardar los cambios en otro:
Para editar el archivo en el lugar, puede usarlo
-s {scriptin}
para leer el archivo de script, por ejemplo:Para analizar el archivo y enviarlo a la salida de la canalización, puede intentar lo siguiente:
o:
Ver más: ¿Cómo editar archivos de forma no interactiva (p. Ej. En canalización)? en Vim SE
fuente
:hi
se puede desplazar y mostrar-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
? No aparece en la lista de búfer, y escribir con:w
escribe un archivo vacío (y la pulsación de tecla 'enter' hace que el buscapersonas se desplace o salga). Puedo usar:redir! >file | :hi | :redir END
, lo que captura tanto como me desplazo. Creo que puede funcionar mecánicamente como un bidireccionalmore
. Tengo que preguntarme por qué:help
y:hi
no están ambos localizados o ambos almacenados en RO ...