ex
es la versión de línea de comandos para vi
y mucho más fácil de usar en secuencias de comandos.
ex $yourfile <<EOEX
:%s/$string_to_replace/$string_to_replace_it_with/g
:x
EOEX
Preguntó cómo escribir "algo" en un archivo de texto a través de vim y ninguna respuesta necesariamente ha cubierto eso todavía.
Para insertar texto:
ex $yourfile <<EOEX
:i
my text to insert
.
:x
EOEX
:i
entra en el modo de inserción. Todas las líneas siguientes son texto insertado hasta .
se ve aparecer solo en su propia línea.
Aquí es cómo buscar e insertar también. Puedes hacer algo como:
ex $yourfile <<EOEX
:/my search query\zs
:a
my text to insert
.
:x
EOEX
Esto encontrará la primera selección que coincida con la expresión regular especificada por :/
, coloque el cursor en la ubicación especificada por \zs
y acceda al modo de inserción después del cursor.
Puedes mover \zs
para lograr diferentes resultados. Por ejemplo:
ex $yourfile <<EOEX
:/start of match \zs end of match
:a
my text to insert
.
:x
EOEX
Esto cambiará la primera aparición de "inicio de coincidencia final de coincidencia" a "inicio de coincidencia mi texto para insertar final de coincidencia".
Si desea permitir cualquier cantidad de espacios en blanco en sus búsquedas entre palabras clave, use \_s*
. Por ejemplo, buscando una función que devuelva 0::/\_s*return\_s*0}
Si desea ver el trabajo que se realiza dentro de vim o gvim, puede usar --remote-send
gvim --servername SHELL_DRIVER
bashpromt# cat mybash.sh
#!/bin/bash
echo "about to open $1"
gvim --servername SHELL_DRIVER $1 #I need to use vim application to open a file
#now write something into file.txt and close it
gvim --servername SHELL_DRIVER --remote-send '<ESC>i something to the file<ESC>:wq<CR>'
echo "done."
Esto será lento pero hará lo que quieras.
Primero abrimos un gvim en el que podemos abrir todos nuestros archivos (por eficiencia)
Con la primera línea de gvim abrimos el archivo en el gvim previamente abierto.
En la segunda línea de gvim, enviamos un comando a la instancia de gvim previamente abierta (con el archivo deseado aún abierto).
El comando es el siguiente:
<ESC>
- salir de cualquier modo en el que gvim pueda haber estado
i something to the file
- vaya al modo de inserción y escriba "algo en el archivo"
<ESC>
- salir del modo de inserción
:wq
- escribir el archivo y salir de vim
Vim tiene varias opciones:
-c
=> pasar comandos ex. Ejemplo:vim myfile.txt -c 'wq'
para forzar la terminación de la última línea de un archivo (a menos quebinary
está configurado de alguna manera por un script)-s
=> reproducir un guión que se grabó con-W
. Por ejemplo, si su archivo contieneZZ
, luegovim myfile.txt -s the_file_containing_ZZ
hará lo mismo que antes.
También tenga en cuenta que, invocado como ex
, vim se iniciará en modo ex; puedes probar ex my_file.txt <<< wq