Vim en modo Ex (también conocido como ex
) es útil cuando:
- Necesita editar archivos (múltiples) de forma no interactiva (como parte del script).
- Su conexión es muy lenta o la pantalla no se actualiza después de sus acciones.
- Las asignaciones y abreviaturas están deshabilitadas.
- Las claves comunes como Escapeo Controlno funcionan correctamente.
La edición de archivos de manera no interactiva es el uso más común y las personas lo usan de manera similar sed
y awk
, sin embargo, están más orientados a la transmisión (solo leen el archivo hacia adelante de principio a fin mientras vim
está orientado al búfer), puede avanzar y retroceder en el archivo como quieras. En segundo lugar, las expresiones regulares de vim son más potentes que las expresiones de awk y sed (no están diseñadas para funcionar con varias líneas); por ejemplo, vim puede coincidir en varias líneas y admite cero coincidencias.
Ex también es un editor (predecesor directo de vi) y en Vim, el modo Ex emula ex
(todavía ejecutan el mismo código), por lo que es posible acceder al modo de comando ex
desde vi y viceversa. Hay un modo Ex ( vim -e
) y un modo Ex mejorado que permite comandos más avanzados que el modo Ex compatible con vi ( vim -E
). Ver: ¿Cuál es la diferencia entre el modo Ex y el modo Ex mejorado?
Ex es la raíz de una familia de editores: edit, ex y vi. Ex es un superconjunto de ed, siendo la extensión más notable una función de edición de pantalla. ex (1)
Ejemplo 1
Aquí hay un ejemplo simple de cambiar 127
a 128
su hosts
archivo e imprimir la salida:
ex -s +%s/127/128/g +%p +q! /etc/hosts
es equivalente a:
sed s/127/128/g /etc/hosts
Para una solución más avanzada, puede tener un archivo con comandos vim y usarlo mediante un enfoque más clásico para la redirección de E / S:
echo :%s/127/128/g > cmds.vim
echo :%print >> cmds.vim
echo :%quit! >> cmds.vim
ex -s /etc/hosts < cmds.vim # The same as: vim -s cmds.vim /etc/hosts
Ejemplo 2
También puede usar los complementos vim para realizar algunas tareas.
Por ejemplo, el siguiente one-liner convertiría su archivo de código fuente en html usando uno de los complementos estándar:
ex -s '+let g:html_no_progress=1' '+syntax on' '+set ft=c' '+runtime syntax/2html.vim' -cwqa my_code.c
Generará un archivo html (con resaltado de sintaxis) a partir de su código (escrito en cualquier idioma compatible) que esté listo para imprimir o publicar en su sitio web.
Ejemplo 3
O algún ejemplo real en vivo de la especificación RPM :
vim -E -s Makefile <<-EOF
:%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/
:%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/
:%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/
:update
:quit
EOF
Ejemplo 4
El siguiente script creará un nuevo archivo html descargando html del sitio de Ejemplo y reemplazando su cuerpo por una tabla 20x20 generada automáticamente con números aleatorios en ella:
" table.vim
%!curl -s example.com
let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',20).'</tr>',20).'</table>'
/<body
norm!vitd"tP
%s/_/\=system('echo $RANDOM')/g
wq
Uso:
ex -s table.html < table.vim
Esto funcionará en sistemas similares a * nix con curl instalado. Agregar -V
para ver el script en acción.
Más ejemplos:
Ver también: