Vim en modo 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.
Básicamente vi
es el modo visual, por lo ex
tanto, el modo Vim Ex es solo una emulación de ex
(todavía ejecutan el mismo código), por lo que es posible acceder al modo de comando ex
desde dentro de vi y viceversa. En realidad, hay dos modos: modo Ex ( vim -e
) y 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
, con la extensión más notable que es una instalación de edición de pantalla. ex (1)
Editar archivos de forma 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 (no están diseñados para trabajar con varias líneas ) mientras vim
está orientado al búfer: puede avanzar y retroceder en el archivo a su gusto, lo que lo hace tan poderoso.
Básicamente:
sed
es un S TREAM ED itor, no un editor de archivos.
Sin embargo, la gente parece abusar de él por tratar de editar archivos y la verdad es que no edita archivos. En segundo lugar, sus opciones como in-place ( -i
) son extensiones de FreeBSD no estándar y pueden no estar disponibles en otros sistemas operativos. Por lo tanto, si desea evitar el código no portable, la sobrecarga de E / S y los efectos secundarios negativos (como destruir enlaces simbólicos), debe usar ex
cuál es el editor estándar basado en comandos de UNIX (junto con ed
) BashFAQ .
Otras cosas que encuentro útiles en el modo Ex es usarlo como un patio de juegos (similar a la python
consola) donde puede ejecutar muchos comandos seguidos, trabajar / depurar expresiones regulares, verificar la configuración de vim, ejecutar comandos externos o trabajar con registros, etc. .
Por ejemplo:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
que es más fácil en el modo Ex que en el modo normal (donde solo puede ver su último comando).
Usos practicos
Tengo los siguientes alias en mi .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Nota: El uso bufdo
no es ex
un método compatible con POSIX (según el manual ), por lo que puede considerar usarlo en su find
lugar. El !
se utiliza para forzar el cambio de las memorias intermedias sin guardar (de lo contrario, se genera una advertencia).
El primero que estoy usando para recortar los espacios finales en todos mis archivos fuente, por ejemplo:
trim **/*.php
El segundo convierte todas las pestañas en espacios (recursivamente), por ejemplo:
retab **/*.php
Para mí, usar retab
es suficiente, pero hay algunas desventajas descritas aquí . Agregue extra -V
para aumentar la producción de verbosidad.
Tenga en cuenta que los ejemplos anteriores usan zsh / bash4 globbing ( **
), así que asegúrese de que su shell lo admita y esté habilitado.
Para ver ejemplos más prácticos (como analizar archivos html), consulte:
También aprenda más sobre el modo Ex en:
Q
yq:
son bastante diferentes Solo te refieres a laQ
derecha?