La guerra de los editores es la rivalidad entre los usuarios de Emacs y los editores de texto vi (ahora normalmente Vim , o más recientemente Neovim ) . La rivalidad se ha convertido en una parte duradera de la cultura de los piratas informáticos y la comunidad del software libre .
El debate de Emacs versus vi fue una de las "guerras santas" originales llevadas a cabo en los grupos de Usenet , [1] con muchas guerras de fuego entre aquellos que insisten en que su editor preferido es el modelo de la perfección de la edición e insultan al otro, ya que al menos 1985. [2] Se han librado batallas relacionadas sobre sistemas operativos , lenguajes de programación , sistemas de control de versiones e incluso el estilo de sangría del código fuente . [3] [4]
Comparación
Las diferencias históricas más importantes [notas 1] entre vi y Emacs se presentan en la siguiente tabla:
Característica | Emacs | vi |
---|---|---|
Ejecución de pulsaciones de teclas | Tradicionalmente [notas 1] , los comandos de Emacs son combinaciones de teclas para las cuales se mantienen presionadas las teclas modificadoras mientras se presionan otras teclas; un comando se ejecuta una vez que se escribe completamente. Esto todavía forma un árbol de decisiones de comandos, pero no una de pulsaciones de teclas individuales. | vi conserva cada permutación de claves escritas. Esto crea una ruta en el árbol de decisiones que identifica inequívocamente cualquier comando. |
Uso de memoria y personalización | Emacs ejecuta muchas acciones al inicio, muchas de las cuales pueden ejecutar código de usuario arbitrario. [5] Esto hace que Emacs tarde más en iniciarse (incluso en comparación con vim) y requiera más memoria . Sin embargo, es altamente personalizable e incluye una gran cantidad de características, ya que es esencialmente un entorno de ejecución para un programa Lisp diseñado para la edición de texto. Emacs 18 (lanzado en 1987) introdujo un modo de servidor [6] diseñado para ejecutarse continuamente en segundo plano. A continuación, se pueden iniciar varias instancias de Emacs en modo cliente, adjuntándose a este servidor y compartiendo el estado. El tiempo de inicio del cliente de Emacs es prácticamente instantáneo ya que todo lo que hace es provocar que el proceso existente de Emacs vuelva a dibujar la pantalla. | vi es un programa más pequeño y rápido, pero con menos capacidad de personalización. vim ha evolucionado de vi para proporcionar significativamente más funcionalidad y personalización que vi, haciéndolo comparable a Emacs [notas 2] . El tiempo de inicio de vi es casi instantáneo para archivos de texto pequeños, mientras que vim es casi tan rápido. |
Entorno de usuario | Emacs, aunque inicialmente también fue diseñado para su uso en una consola, tenía soporte de GUI X11 agregado en Emacs 18, y se convirtió en el predeterminado en la versión 19. Las GUI de Emacs actuales incluyen soporte completo para espaciado proporcional y variación de tamaño de fuente. Emacs también admite imágenes e hipertexto incrustados . | vi, como emacs, originalmente se usaba exclusivamente dentro de una consola en modo texto, sin ofrecer una interfaz gráfica de usuario (GUI). Muchos derivados de vi modernos, por ejemplo, MacVim y gVim, incluyen GUI. Sin embargo, el soporte para fuentes espaciadas proporcionalmente permanece ausente. También falta el soporte para fuentes de diferentes tamaños en el mismo documento. [9] |
Interfaz de función / navegación | Emacs usa acordes metakey . [notas 3] Las teclas o acordes de teclas se pueden definir como teclas de prefijo , lo que pone a Emacs en un modo en el que espera las pulsaciones de teclas adicionales que constituyen un enlace de teclas . Las combinaciones de teclas pueden ser específicas del modo, lo que personaliza aún más el estilo de interacción. Emacs proporciona una línea de comandos a la que accede Mx que se puede configurar para que se autocomplete de varias formas. Emacs también proporciona una defalias macro que permite nombres alternativos para los comandos. | vi utiliza distintos modos de edición . En "modo de inserción", las teclas insertan caracteres en el documento. En el "modo normal" (también conocido como "modo de comando", que no debe confundirse con el "modo de línea de comandos", que permite al usuario ingresar comandos), las teclas simples ejecutan comandos vi. |
Teclado | La expansión de uno de los backronyms de Emacs es Escape, Meta, Alt, Control, Shift , que resume perfectamente la mayoría de las teclas modificadoras que usa, solo omitiendo Super . Emacs se desarrolló en teclados Space-cadet que tenían más modificadores de teclas que los diseños modernos. Hay múltiples paquetes emacs, como spacemacs [11] o ergoemacs [12] que reemplazan estas combinaciones de teclas por otras más fáciles de escribir, o el usuario puede personalizarlo ad hoc . | vi no usa la Altclave y rara vez la usa Ctrl. El conjunto de claves de vi está restringido principalmente a las teclas alfanuméricas y la tecla de escape . Esta es una reliquia perdurable de su herencia de teletipo , pero tiene el efecto de hacer que la mayor parte de la funcionalidad de vi sea accesible sin los frecuentes e incómodos alcances de los dedos. |
Soporte de lenguaje y escritura | Emacs tiene soporte completo para todos los sistemas de escritura compatibles con Unicode y permite que múltiples scripts se mezclen libremente. [13] | vi tiene soporte rudimentario para otros idiomas además del inglés. Modern Vim admite Unicode si se usa con un terminal que admita Unicode. |
Beneficios de Emacs
- Emacs tiene una interfaz no modal
- Uno de los programas informáticos más portados . Se ejecuta en modo texto y bajo interfaces gráficas de usuario en una amplia variedad de sistemas operativos , incluida la mayoría de los sistemas similares a Unix ( Linux , los diversos BSD , Solaris , AIX , IRIX , macOS [14] [15], etc.), MS- DOS , Microsoft Windows , [16] [17] [18] AmigaOS y OpenVMS . Los sistemas Unix, tanto gratuitos como propietarios, frecuentemente proporcionan Emacs incluido con el sistema operativo .
- La arquitectura del servidor de Emacs permite que varios clientes se conecten a la misma instancia de Emacs y compartan la lista de búfer, el anillo de eliminación , el historial de deshacer y otros estados.
- Sistema de ayuda en línea generalizado con combinaciones de teclas, funciones y comandos documentados sobre la marcha.
- Variante del lenguaje de programación Lisp extensible y personalizable ( Emacs Lisp ), con características que incluyen:
- Habilidad para emular vi y vim (usando Evil, [19] Viper o Vimpulse).
- Un administrador de archivos potente y extensible ( dired ), un depurador integrado y un gran conjunto de herramientas de desarrollo y otras.
- Hacer que cada comando sea una función Emacs Lisp habilita comandos para DWIM (Do What I Mean) respondiendo programáticamente a acciones pasadas y al estado del documento. Por ejemplo, un
switch-or-split-window
comando puede cambiar a otra ventana si existe, o crear una si es necesario. Esto reduce el número de pulsaciones de teclas y comandos que un usuario debe recordar. - "Un SO dentro de un SO". Emacs Lisp permite programar Emacs mucho más allá de las funciones de edición. Incluso una instalación básica contiene varias docenas de aplicaciones, incluidos dos navegadores web , lectores de noticias, varios agentes de correo, cuatro clientes de IRC , una versión de ELIZA y una variedad de juegos. Todas estas aplicaciones están disponibles en cualquier lugar donde se ejecute Emacs, con la misma interfaz de usuario y funcionalidad. A partir de la versión 24, Emacs incluye un administrador de paquetes , lo que facilita la instalación de aplicaciones adicionales, incluidos navegadores web alternativos, EMMS ( Emacs Multimedia System ) y más. También están disponibles numerosos paquetes para la programación, incluidos algunos dirigidos a combinaciones específicas de lenguaje / biblioteca o estilos de codificación.
- La naturaleza no modal de las combinaciones de teclas de Emacs hace que sea práctico admitirlas como combinaciones de teclas en todo el sistema operativo. [20]
Beneficios de vi
- Los comandos de edición son componibles [21]
- Vi tiene una interfaz modal
- Vi se carga más rápido que Emacs.
- Al estar profundamente asociado con la tradición de UNIX, se ejecuta en todos los sistemas que pueden implementar la biblioteca C estándar , incluidos UNIX , Linux , AmigaOS , DOS , Windows , Mac , BeOS , OpenVMS , IRIX , AIX , HP-UX , BSD y compatible con POSIX sistemas.
- Extensible y personalizable a través del script Vim o API para lenguajes interpretados como Python, Ruby, Perl y Lua.
- Ubicuo. Básicamente, todos los sistemas Unix y similares a Unix vienen con vi (o una variante) incorporado. Vi (y ex, pero no vim) se especifica en el estándar POSIX . [22]
- Los entornos de rescate del sistema, los sistemas integrados (especialmente los que tienen BusyBox ) y otros entornos restringidos a menudo incluyen vi, pero no emacs.
Evolución
En el pasado, florecieron muchos pequeños editores basados en vi o derivados de vi. Esto se debió a la importancia de conservar la memoria con la cantidad comparativamente minúscula disponible en ese momento. A medida que las computadoras se han vuelto más poderosas, muchos clones de vi, Vim en particular, han crecido en tamaño y complejidad de código. Estas variantes vi de hoy, al igual que las antiguas variantes ligeras de Emacs, tienden a tener muchos de los beneficios e inconvenientes percibidos del lado opuesto. Por ejemplo, Vim sin ninguna extensión requiere aproximadamente diez veces el espacio en disco requerido por vi, y las versiones recientes de Vim pueden tener más extensiones y ejecutarse más lento que Emacs. En El arte de la programación Unix , Eric S. Raymond calificó el supuesto peso ligero de Vim en comparación con Emacs como "un mito compartido". [23] Además, con las grandes cantidades de RAM en las computadoras modernas, tanto Emacs como vi son livianos en comparación con grandes entornos de desarrollo integrados como Eclipse , que tienden a atraer la burla de los usuarios de Emacs y vi por igual.
Tim O'Reilly dijo, en 1999, que el tutorial de O'Reilly Media sobre vi vende el doble de copias que el de Emacs (pero señaló que Emacs venía con un manual gratuito). [24] Muchos programadores usan Emacs y vi o sus diversas ramificaciones, incluido Linus Torvalds que usa MicroEMACS . [25] También en 1999, el creador de vi Bill Joy dijo que vi fue "escrito para un mundo que ya no existe" y afirmó que Emacs fue escrito en máquinas mucho más capaces con pantallas más rápidas para que pudieran tener "comandos divertidos con el pantalla reluciente y todo eso, y mientras tanto, estoy sentado en casa en una especie de vivienda excedente de la Segunda Guerra Mundial en Berkeley con un módem y una terminal que apenas pueden sacar el cursor de la línea de fondo ". [26] [27]
Además de los workalikes de Emacs y vi, pico y su clon nano gratuito y de código abierto y otros editores de texto como ne a menudo tienen sus propios defensores de terceros en las guerras de los editores, aunque no en la medida de Emacs y vi.
A partir de 2020[actualizar], tanto Emacs como vi pueden presumir de estar entre los programas de aplicación de mayor duración de todos los tiempos, [28] además de ser los dos editores de texto más utilizados en Linux y Unix. [29] Muchos sistemas operativos, especialmente Linux y derivados de BSD , combinan varios editores de texto con el sistema operativo para satisfacer la demanda de los usuarios. Por ejemplo, una instalación predeterminada de macOS contiene Emacs, ed , nano , TextEdit y Vim. Con frecuencia, en algún momento de la discusión, alguien señalará que ed es el editor de texto estándar . [30]
Humor
La Iglesia de Emacs , [31] formada por Emacs y el creador del Proyecto GNU Richard Stallman , es una religión de parodia . [32] Si bien se refiere a vi como el "editor de la bestia" (vi-vi-vi es 6-6-6 en números romanos), no se opone al uso de vi ; más bien, llama anatema al software propietario . ("Usar una versión gratuita de vi no es un pecado sino una penitencia ". [33] ) La Iglesia de Emacs tiene su propio grupo de noticias , alt.religion.emacs, que tiene publicaciones que pretenden respaldar este sistema de creencias.
Stallman se ha referido a sí mismo como St I GNU −cius , un santo en la Iglesia de Emacs. [34]
Los partidarios de vi han creado un culto de vi opuesto , argumentado por los usuarios de Emacs más duros como un intento de "imitar a sus mejores". [ cita requerida ]
Con respecto a la naturaleza modal de vi (un punto común de frustración para los nuevos usuarios) [35] algunos usuarios de Emacs bromean diciendo que vi tiene dos modos: "bip repetidamente" y "romper todo". Los usuarios de vi disfrutan bromeando acerca de que las secuencias de teclas de Emacs inducen el síndrome del túnel carpiano , o mencionar una de las muchas expansiones satíricas del acrónimo EMACS, como "Escape Meta Alt Control Shift" (un comentario sobre la dependencia de Emacs de las teclas modificadoras) [36] o " Ocho megabytes y constantemente intercambiando "(en una época en la que había una gran cantidad de memoria) o" EMACS hace que cualquier computadora sea lenta "(un acrónimo recursivo como los que usa Stallman) [37] o" Eventually Munches All Computer Storage ", en referencia a los altos requisitos de recursos del sistema de Emacs. GNU EMACS se ha ampliado a "Generalmente no utilizado, excepto por científicos informáticos de mediana edad", haciendo referencia a sus fanáticos más fervientes, y su uso en declive entre los programadores más jóvenes en comparación con editores más orientados a gráficos como Atom , BBEdit , Sublime Text , TextMate , y Visual Studio Code .
Como comentario a las características progresivas de Emacs , se sabe que los defensores de vi describen a Emacs como "un gran sistema operativo, al que sólo le falta un editor decente". Se sabe que los defensores de Emacs responden que el editor es realmente muy bueno, pero que el sistema operativo podría mejorar (refiriéndose a la famosa falta de concurrencia de Emacs , que ahora se ha agregado [38] ).
Un juego entre usuarios de UNIX, ya sea para probar la profundidad de la comprensión del editor de un usuario de Emacs o para burlarse de la complejidad de Emacs, implicaba predecir lo que sucedería si un usuario mantuviera presionada una tecla modificadora (como Ctrlo Alt) y escribiera su nombre propio. Este humor de juego se originó con [39] usuarios del antiguo editor TECO , que era la base de implementación, a través de macros, del Emacs original.
Debido a cómo se sale de vi (": q", entre otros), los piratas informáticos bromean sobre un método propuesto para crear una secuencia de caracteres pseudoaleatoria al hacer que un usuario no familiarizado con vi se siente frente a un editor abierto y le pida que salga del programa. [ cita requerida ]
El motor de búsqueda de Google también se unió a la broma al hacer búsquedas de vi que resultaron en la pregunta "Quiso decir: emacs" en la parte superior de la página, y las búsquedas de emacs dieron como resultado "Quiso decir: vi".
Ver también
- Guerras de navegadores
- Comparación de editores de texto
Notas
- ^ a b Hoy en día, ambos editores proporcionan formas fáciles de implementar combinaciones de teclas entre sí. En Emacs, las combinaciones de teclas de Vim se implementan a través del modo Evil, mientras que en Vim, las combinaciones de teclas de Emacs se implementan a través del paquete Vimacs. Aunque las combinaciones de teclas de Vim son populares por su ergonomía, la tecla posiblemente más ergonómica de un teclado, es decir, la barra espaciadora, no se usa en Vim. Se implementó una alternativa popular a las formas de navegación de Emacs y Vim a través de Spacemacs, que es una configuración popular de Emacs que aprovecha la barra espaciadora para funcionar como la tecla principal para el control y la navegación. La idea de Spacemacs también se ha trasladado a Vim a través de Spacevim.
- ^ A partir de 2013[actualizar], vim tiene 1731 kLOC de código (1142 en C + 506 stock distro vimScript + 83 makefile relacionado), mientras que GNU Emacs tiene 1623 (solo 299 en C + 1270 stock distro Emacs Lisp + 54 makefile relacionado). [7] [8] Hay muchos paquetes opcionales de Emacs Lisp (y Vimscript) disponibles; los números aquí se refieren únicamente al código que se incluye realmente en la descarga principal del editor respectivo.
- ^ Emacs también tiene algo llamado "modos"; sin embargo, en Emacs estos generalmente se refieren a estados de interacción a largo plazo que se aplican durante todo el tiempo que uno trabaja con un archivo o conjunto de datos dado, que no es la definición de interfaz modal per se . [10]
Referencias
- ^ "Guerra Santa (jerga de hackers)" . Archivado desde el original el 2 de abril de 2012 . Consultado el 30 de noviembre de 2016 .
- ^ "EMACS vs. vi: La interminable geek 'guerra santa ' " . Archivado desde el original el 30 de noviembre de 2016 . Consultado el 30 de noviembre de 2016 .
- ^ "Déjame codificar" . Archivado desde el original el 1 de mayo de 2015 . Consultado el 24 de abril de 2015 .
- ^ "Por qué importa el estilo de codificación" . Archivado desde el original el 3 de mayo de 2015 . Consultado el 24 de abril de 2015 .
- ^ "Resumen de inicio" .
- ^ "NOTICIAS.18" . Archivado desde el original el 14 de junio de 2015.
A los programas como los mailers que invocan "el editor" como inferior para editar algún texto, ahora se les puede decir que usen un proceso de Emacs existente en lugar de crear un nuevo editor.
- ^ "El proyecto de código abierto GNU Emacs en Open Hub: página de idiomas" . Ohloh.net . Consultado el 1 de diciembre de 2014 .
- ^ "El proyecto de código abierto de Vim en Open Hub: página de idiomas" . Ohloh.net . Consultado el 1 de diciembre de 2014 .
- ^ "syntax.txt" .
¡Todas las fuentes utilizadas, excepto Menú e Información sobre herramientas, deben tener el mismo tamaño de carácter que la fuente predeterminada! De lo contrario, se producirán problemas al volver a dibujar.
[ enlace muerto permanente ] - ^ "EmacsWiki: modos de categoría" . Emacswiki.org . Consultado el 1 de diciembre de 2014 .
- ^ "spacemacs" .
- ^ "Ergoemacs" .
- ^ "Caracteres internacionales" .
Internamente, Emacs usa su propia codificación de caracteres multibyte, que es un superconjunto del estándar Unicode. Esta codificación interna permite que los caracteres de casi todos los scripts conocidos se mezclen en un solo búfer o cadena. Emacs traduce entre la codificación de caracteres multibyte y varios otros sistemas de codificación al leer y escribir archivos y al intercambiar datos con subprocesos.
- ^ "Paquete Carbon Emacs" . Archivado desde el original el 14 de marzo de 2007 . Consultado el 27 de septiembre de 2006 .
- ^ "Aquamacs es un Emacs estilo Mac fácil de usar para Mac OS X" . Consultado el 27 de septiembre de 2006 .
- ^ B, Ramprasad (24 de junio de 2005). "Preguntas frecuentes sobre GNU Emacs para Windows 95/98 / ME / NT / XP y 2000" . Consultado el 27 de septiembre de 2006 .
- ^ Borgman, Lennart (2006). "Página de inicio de EmacsW32" . Archivado desde el original el 6 de marzo de 2007 . Consultado el 27 de septiembre de 2006 .
- ^ "GNU Emacs en Windows" . Franz Inc. 2006 . Consultado el 27 de septiembre de 2006 .
- ^ "Evil - Inicio - Wiki abierto" . gitorious.org . 29 de mayo de 2014. Archivado desde el original el 16 de septiembre de 2014 . Consultado el 16 de septiembre de 2014 .
- ^ "(Emacs) Atajos de teclado para editar campos de texto en OS X" .
- ^ Kozlowski, Mike. "Por qué Atom no puede reemplazar a Vim" . Consultado el 7 de mayo de 2014 .
- ^ "vi" . pubs.opengroup.org . Consultado el 11 de marzo de 2017 .
- ^ "El tamaño adecuado para un editor" . Catb.org . Consultado el 1 de diciembre de 2014 .
- ^ "Editor: ¿vi o emacs?" . Oreilly.com. 21 de junio de 1999. Archivado desde el original el 1 de abril de 2014 . Consultado el 1 de diciembre de 2014 .
- ^ Jarosław Rzeszótko. "Stifflog: Stiff pregunta, los grandes programadores responden" . Stifflog.com. Archivado desde el original el 8 de noviembre de 2006 . Consultado el 1 de diciembre de 2014 .
- ^ Vance, Ashlee (11 de septiembre de 2003). "El mayor regalo de Bill Joy al hombre - el editor vi" . theregister.co.uk . Archivado desde el original el 3 de junio de 2014 . Consultado el 3 de junio de 2014 .
- ^ Joy, Bill (noviembre de 1999). "La alegría de Unix: el cofundador de Sun Microsystems, Bill Joy, muestra dónde Linux y el software libre encajan en el sistema solar de su empresa" . Revista Linux (entrevista). Entrevistado por Eugene Eric Kim. Archivado desde el original el 7 de febrero de 2003 . Consultado el 3 de junio de 2014 .
- ^ Auerbach, David (9 de mayo de 2014). "La rivalidad más antigua en informática" . Pizarra .
dos programas rivales pueden reclamar estar entre las aplicaciones más duraderas de todos los tiempos. Ambos programas están a punto de entrar en su quinta década. Ambos programas son editores de texto, para ingresar y editar código, archivos de datos, páginas web HTML sin procesar y cualquier otra cosa. Y son enemigos mortales.
- ^ "Elección de un editor" .
Estos dos editores expresan filosofías de diseño muy contrastantes, pero ambos son extremadamente populares y exigen una gran lealtad de poblaciones de usuarios centrales identificables. Las encuestas a los programadores de Unix indican consistentemente una división del 50/50 entre ellos, y todos los demás editores apenas se registran.
- ^ "Ed, man!! Man ed" . Gnu.org . Consultado el 1 de diciembre de 2014 .
- ^ " Reglas, Pecados, Virtudes, Dioses y más de La Iglesia de Emacs " . Gnu.org . Consultado el 1 de diciembre de 2014 .
- ^ "San IGNUcio - Richard Stallman" . Stallman.org. Archivado desde el original el 22 de noviembre de 2014 . Consultado el 1 de diciembre de 2014 .
- ^ "La transcripción selectiva íntegra de la charla de Richard M Stallman en la ANU" . Linuxhelp.blogspot.com . Consultado el 1 de diciembre de 2014 .
- ^ "San IGNUcio - Richard Stallman" . Stallman.org . Consultado el 1 de diciembre de 2014 .
- ^ vi (jerga de hackers)
- ^ "Algunas divertidas expansiones de siglas de Emacs" . Gnu.org. Archivado desde el original el 16 de febrero de 2021 . Consultado el 1 de diciembre de 2014 .
- ^ Rösler, Wolfram. "La lista de acrónimos de Unix" . Archivado desde el original el 16 de febrero de 2021 . Consultado el 4 de marzo de 2021 .
- ^ "La simultaneidad ha aterrizado (era: pruebe la combinación de la simultaneidad br" . Lists.gnu.org . Consultado el 8 de diciembre de 2020 .
- ^ "Los programadores reales no utilizan PASCAL". Datamation : 263-265. Julio de 1983.
enlaces externos
- Resultados de un experimento que compara Vi y Emacs
- Comparación de pulsaciones de teclas por tarea
- Humor en torno a Vi, Emacs y sus comparaciones
- Resultados del Sucks-Rules-O-Meter para Vi y Emacs a partir de comentarios hechos en la Web
- En la Iglesia de Emacs "usar una versión gratuita de vi no es un pecado, es una penitencia".
- Emacs ofrece la funcionalidad Vi , de la wiki de Emacs
- Emacs Vs Vi , de WikiWikiWeb
- El tamaño adecuado para un editor que discute vi y Emacs en términos relativamente modernos