El tutorial menciona que el modo Ex es para el procesamiento por lotes. Dado que es una molestia, más que una herramienta, para mí, me gustaría ver algunos ejemplos prácticos. ¿Quién lo usa? ¿Por qué?
¿Para qué sirve el modo EX para el procesamiento por lotes?
Respuestas:
Vim en modo Ex (también conocido como
ex
) es útil cuando: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
yawk
, sin embargo, están más orientados a la transmisión (solo leen el archivo hacia adelante de principio a fin mientrasvim
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 comandoex
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?Ejemplo 1
Aquí hay un ejemplo simple de cambiar
127
a128
suhosts
archivo e imprimir la salida:es equivalente a:
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:
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:
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 :
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:
Uso:
Más ejemplos:
Ver también:
fuente
Ex-Mode es principalmente para realizar la misma acción en varios archivos.
Digamos que tiene 25 archivos .html, todos con:
En lugar de abrir cada uno de ellos, puede usar el modo Ex para cambiarlo todo a
index.html
:fuente
for file in *.html; do vim -es -c '%s/home\.html/index.html/g' -c wq "$file"; done
.A partir de la reciente versión 7.3 que, como soporte de deshacer persistente, el modo ex y otras formas de procesamiento por lotes de vim es superior a otros métodos que no son de vim, ya que no afectará el historial de deshacer.
Agregar: 'deshacer persistente' si está habilitado, mantiene todos los cambios en un archivo (hasta un límite) en el historial de deshacer, en las sesiones de edición de vim. Si el archivo es editado por un programa externo, vim restablecerá el historial de deshacer cuando detecte por suma de verificación que ha cambiado. vim -E le permitirá editar por lotes un archivo y la edición estará en el historial de deshacer.
fuente
Esto no responde a su pregunta sobre el procesamiento por lotes, pero es otra forma de explicar qué es el modo Ex. Sabes como presionas
:
ir al modo de línea de comandos e ingresar comandos? Bueno, el modo Ex también le permite ingresar los mismos comandos, excepto que Vim no abandona el modo Ex después de ingresar un comando, permanece en modo Ex y puede ingresar otro comando. Por lo tanto, es como una REPL (lectura, evaluación, impresión, bucle), pero sin la impresión (así que solo un REL ...). Volveré a por qué querrías ese tipo de REL más tarde. Es por eso que se llama modo Ex, le permite ingresar comandos Ex, que es lo mismo que hace el modo de línea de comandos, le permite ingresar un comando Ex. Otra forma de explicarlo es que le permite ingresar e inmediatamente ejecuta el código Vimscript / VimL. Vimscript / VimL es un lenguaje que puede usar para escribir complementos de Vim. También es el idioma que usa para escribir su archivo de configuración (probablemente .vimrc). También es el idioma que está utilizando cuando ingresa comandos Ex desde el modo de línea de comandos o el modo Ex. Entonces, desde esa perspectiva, el modo Ex puede verse como un VimL REL. ¿Por qué querrías un VimL REL? Por la misma razón, a las personas les gustan los REPL para otros idiomas. Pueden ser realmente útiles para depurar código o experimentar con el lenguaje para ver cómo funcionan las cosas, especialmente si está escribiendo complementos en VimL o altamente personalizando su archivo de configuración (lo que probablemente significaría que está violando el principal de SRP y debería dividirlo en complementos).fuente
:!python
etc.