Articulo de referencia

Emacs

Multics Emacs es un ejemplo de las primeras implementaciones de Emacs. Emacs ( / ˈ iː m æ k s / ⓘ ), originalmente llamado EMACS (acrónimo de "Editor Macros"), [ 1 ] [ 2 ] [ 3 ]...

Captura de pantalla de Multics Emacs
Multics Emacs es un ejemplo de las primeras implementaciones de Emacs.

Emacs ( / ˈ m æ k s / ), originalmente llamadoEMACS(acrónimo de "Editor Macros"), [ 1 ] [ 2 ] [ 3 ] es una familia deeditores de textoque se caracterizan por suextensibilidad. [ 4 ] El manual de la variante más utilizada, [ 5 ] GNU Emacs, lo describe como "el editor de visualización en tiempo real, extensible, personalizable y autodocumentado". [ 6 ] El desarrollo del primer Emacs comenzó a mediados de la década de 1970, [ 7 ] [ 8 ] y el trabajo en GNU Emacs, descendiente directo del original, continúa; su última versión esla 30.2 [ 9 ] , publicadael 14 de agosto de 2025. Edita esto en Wikidata

Emacs cuenta con más de 10 000 comandos integrados y su interfaz de usuario permite combinarlos en macros para automatizar tareas. Las implementaciones de Emacs suelen utilizar un dialecto del lenguaje de programación Lisp , lo que permite a usuarios y desarrolladores escribir nuevos comandos y aplicaciones para el editor. Se han creado extensiones para, entre otras cosas, gestionar archivos , acceso remoto , [ 10 ] correo electrónico , esquemas , multimedia, integración con Git , fuentes RSS , [ 11 ] y edición colaborativa , [ 12 ] así como implementaciones de ELIZA , Pong , Conway's Life , Snake , Dunnet y Tetris . [ 13 ]

El EMACS original fue escrito en 1976 por David A. Moon y Guy L. Steele Jr. como un conjunto de macros para el editor TECO . [ 14 ] [ 1 ] [ 2 ] [ 3 ] [ 15 ] Se inspiró en las ideas de los editores de macros TECO TECMAC y TMACS. [ 16 ]

La versión más popular y más adaptada de Emacs es GNU Emacs, creada por Richard Stallman para el Proyecto GNU . [ 17 ] XEmacs es una variante que se derivó de GNU Emacs en 1991. GNU Emacs y XEmacs utilizan dialectos Lisp similares y, en general, son compatibles entre sí. El desarrollo de XEmacs es actualmente muy lento.

GNU Emacs es, junto con vi , uno de los dos principales contendientes en la tradicional guerra de editores de la cultura Unix . GNU Emacs se encuentra entre los proyectos de código abierto y libre más antiguos que aún están en desarrollo. [ 18 ]

Historia

Emacs fue iniciado por Guy L. Steele Jr. como un proyecto para unificar los muchos conjuntos de comandos y combinaciones de teclas divergentes de TECO en el MIT . [ 2 ]
David A. Moon
La interfaz de Emacs estuvo influenciada por el diseño del teclado Space-Cadet , que buscaba permitir a los usuarios escribir la mayor cantidad posible de tipos diferentes de entrada. [ 19 ]

El desarrollo de Emacs comenzó durante la década de 1970 en el Laboratorio de IA del MIT , cuyos ordenadores PDP-6 y PDP-10 utilizaban el sistema operativo Incompatible Timesharing System (ITS) , que incluía un editor de línea predeterminado conocido como Text Editor and Corrector (TECO). A diferencia de la mayoría de los editores de texto modernos, TECO utilizaba modos separados en los que el usuario podía añadir texto, editar texto existente o mostrar el documento. No se podían insertar caracteres directamente en un documento escribiéndolos en TECO, sino que se introducía un carácter ('i') en el lenguaje de comandos de TECO para que cambiara al modo de entrada, se introducían los caracteres necesarios (durante este tiempo el texto editado no se mostraba en la pantalla) y, finalmente, se introducía un carácter (<esc>) para que el editor volviera al modo de comandos. (Se utilizaba una técnica similar para permitir la sobrescritura). Este comportamiento es similar al del programa ed .

En la década de 1970, TECO ya era un programa antiguo, lanzado inicialmente en 1962. Richard Stallman visitó el Laboratorio de IA de Stanford en 1976 [ 20 ] y vio el editor E del laboratorio , escrito por Fred Wright. [ 21 ] Quedó impresionado por el comportamiento intuitivo WYSIWYG (Lo que ves es lo que obtienes) del editor, que desde entonces se ha convertido en el comportamiento predeterminado de la mayoría de los editores de texto modernos. Regresó al MIT, donde Carl Mikkelsen, un hacker del Laboratorio de IA, había añadido a TECO un modo combinado de visualización/edición llamado Control-R que permitía que la pantalla se actualizara cada vez que el usuario pulsaba una tecla. Stallman reimplementó este modo para que funcionara de manera eficiente y luego añadió una función de macro al modo de visualización/edición de TECO que permitía al usuario redefinir cualquier pulsación de tecla para ejecutar un programa TECO. [ 3 ]

Emacs tenía otra característica de la que carecía TECO: la edición de acceso aleatorio. TECO era un editor secuencial de páginas diseñado para editar cintas de papel en el PDP-1 en una época en la que la memoria de los ordenadores era generalmente pequeña debido a su coste. Una característica de TECO era que permitía editar solo una página a la vez, de forma secuencial, en el orden de las páginas del archivo. En lugar de adoptar el enfoque de E de estructurar el archivo para el acceso aleatorio de páginas en el disco, Stallman modificó TECO para gestionar grandes búferes de forma más eficiente y cambió su método de gestión de archivos para leer, editar y escribir el archivo completo como un único búfer. Casi todos los editores modernos utilizan este enfoque.

La nueva versión de TECO rápidamente se popularizó en el AI Lab y pronto acumuló una gran colección de macros personalizadas cuyos nombres a menudo terminaban en MAC o MACS , que significaba macro . Dos años más tarde, Guy Steele asumió el proyecto de unificar las diversas macros en un solo conjunto. [ 22 ] La implementación final de Steele y Stallman incluía funciones para extender y documentar el nuevo conjunto de macros. [ 3 ] El sistema resultante se llamó EMACS, que significaba Editing MACroS o, alternativamente, Emacs with MACroS . Más tarde, se popularizó el uso de EMACS como acrónimo recursivo de EMACS Makes All Computing Simple ; esto encajaba con el creciente uso de acrónimos recursivos para otras versiones de EMACS. (Véase más abajo). Stallman eligió el nombre Emacs "porque <E> no se usaba como abreviatura en ITS en ese momento". [ 23 ] Un koan apócrifo de hackers afirma que el programa recibió su nombre de Emack & Bolio's , una popular heladería de Boston . [ 24 ] El primer sistema EMACS operativo existió a finales de 1976. [ 25 ]

Stallman vio un problema en la excesiva personalización y la bifurcación de facto , y estableció ciertas condiciones de uso. Más tarde escribió: [ 25 ]

EMACS se distribuyó sobre la base de un sistema de reparto comunitario, lo que significa que todas las mejoras deben devolverse a mí para que las incorpore y distribuya.

La versión original de Emacs solo funcionaba en el PDP-10 con ITS. Su comportamiento era lo suficientemente diferente al de TECO como para considerarlo un editor de texto independiente, y rápidamente se convirtió en el programa de edición estándar en ITS. Mike McMahon adaptó Emacs de ITS a los sistemas operativos TENEX y TOPS-20 . Otros colaboradores de las primeras versiones de Emacs fueron Kent Pitman , Earl Killian y Eugene Ciccarelli . En 1979, Emacs era el editor principal utilizado en el laboratorio de IA del MIT y en su Laboratorio de Ciencias de la Computación. [ 26 ]

Implementaciones

Implementaciones tempranas

Zmacs , un Emacs para máquinas Lisp , una evolución de EINE y ZWEI
James Gosling escribió un editor similar a Emacs para ejecutarse en Unix ( Gosling Emacs ) en 1981.

En los años siguientes, los programadores escribieron una variedad de editores similares a Emacs para otros sistemas informáticos. Estos incluían EINE ( EINE Is Not EMACS ) y ZWEI [ 27 ] ( ZWEI Was EINE Initially ), escritos para la máquina Lisp por Mike McMahon y Daniel Weinreb , y Sine ( Sine Is Not Eine ), [ 28 ] escrito por Owen Theodore Anderson. EINE de Weinreb fue el primer Emacs escrito en Lisp. En 1978, Bernard Greenberg escribió Multics Emacs casi en su totalidad en Multics Lisp en el Laboratorio de Sistemas de Información de Honeywell en Cambridge. Multics Emacs fue mantenido posteriormente por Richard Soley , quien luego desarrolló el editor similar a Emacs NILE para el Proyecto NIL, y por Barry Margolin. Muchas versiones de Emacs, incluyendo GNU Emacs, adoptarían más tarde Lisp como lenguaje de extensión.

James Gosling , quien más tarde inventaría NeWS y el lenguaje de programación Java , escribió Gosling Emacs en 1981. Gosling Emacs, el primer editor similar a Emacs que se ejecutaba en Unix , estaba escrito en C y utilizaba Mocklisp , un lenguaje con sintaxis similar a Lisp, como lenguaje de extensión.

Los primeros anuncios de CCA EMACS de Computer Corporation of America (Steve Zimmerman) aparecieron en 1984. [ 29 ] CCA EMACS se basó originalmente en EMACS de Warren Montgomery, pero se reescribió gradualmente de tal manera que para cuando se lanzó comercialmente en 1983, ya no quedaba nada del código de Montgomery. [ 30 ] CCA EMACS se escribió para emular el EMACS original de PDP-10 (escrito por Richard Stallman ) lo más fielmente posible, a la vez que se añadieron muchos comandos nuevos. En 1984, en una competición con otras versiones de Emacs, ganó una licencia de sitio del MIT para su Proyecto Athena.

GNU Emacs

GNU Emacs ejecutándose en una consola de texto
GNU Emacs ejecutándose en Microsoft Windows

Richard Stallman comenzó a trabajar en GNU Emacs en 1984 para crear una alternativa de software libre al software propietario Gosling Emacs. Inicialmente, GNU Emacs se basaba en Gosling Emacs, pero la sustitución del intérprete Mocklisp por un intérprete Lisp por parte de Stallman requirió la reescritura de casi todo su código. Este se convirtió en el primer programa publicado por el naciente Proyecto GNU. GNU Emacs está escrito en C y proporciona Emacs Lisp , también implementado en C, como lenguaje de extensión. La versión 13, la primera versión pública, se lanzó el 20 de marzo de 1985. La primera versión de GNU Emacs ampliamente distribuida fue la versión 15.34, publicada a finales de 1985. Las primeras versiones de GNU Emacs se numeraban como 1.xx , donde el dígito inicial indicaba la versión del núcleo C. El 1 se eliminó después de la versión 1.12, ya que se pensó que el número principal nunca cambiaría, y por lo tanto la numeración saltó del 1 al 13. [ 31 ] En septiembre de 2014, se anunció en la lista de correo GNU emacs-devel que GNU Emacs adoptaría una estrategia de lanzamiento rápido y los números de versión se incrementarían más rápidamente en el futuro. [ 32 ]

GNU Emacs ofrecía más funciones que Gosling Emacs, en particular un Lisp completo como lenguaje de extensión, y pronto reemplazó a Gosling Emacs como el editor Emacs de facto en Unix. Markus Hess explotó una vulnerabilidad de seguridad en el subsistema de correo electrónico de GNU Emacs en su ola de ataques informáticos de 1986, en la que obtuvo acceso de superusuario a ordenadores Unix. [ 33 ]

La mayor parte de la funcionalidad de GNU Emacs se implementa mediante un lenguaje de scripting llamado Emacs Lisp . Dado que aproximadamente el 70 % de GNU Emacs está escrito en el lenguaje de extensión Emacs Lisp, [ 34 ] solo es necesario portar el núcleo C que implementa el intérprete de Emacs Lisp. Esto hace que portar Emacs a una nueva plataforma sea considerablemente menos difícil que portar un proyecto equivalente compuesto únicamente por código nativo.

El desarrollo de GNU Emacs fue relativamente cerrado hasta 1999 y se utilizó como ejemplo del estilo de desarrollo Cathedral en The Cathedral and the Bazaar . Desde entonces, el proyecto ha adoptado una lista de correo de desarrollo pública y acceso anónimo a CVS . El desarrollo se llevó a cabo en un único tronco de CVS hasta 2008 y luego se cambió al DVCS de Bazaar . El 11 de noviembre de 2014, el desarrollo se trasladó a Git . [ 35 ]

Archivo C en Emacs 27 con el tema modus-operandi

Richard Stallman ha seguido siendo el principal mantenedor de GNU Emacs, pero se ha apartado del cargo en ocasiones. Stefan Monnier y Chong Yidong fueron mantenedores de 2008 a 2015. [ 36 ] [ 37 ] John Wiegley fue nombrado mantenedor en 2015 tras una reunión con Stallman en el MIT. [ 38 ] Wiegley renunció en 2018, [ 39 ] dejando a Eli Zaretskii como mantenedor principal. Stefan Kangas fue nombrado co-mantenedor en 2023, [ 40 ] y Andrea Corallo se unió a Zaretskii y Kangas en 2024. [ 41 ]

Hasta 2025, GNU Emacs ha tenido 1.608 colaboradores individuales a lo largo de su historia. [ 42 ]

XEmacs

XEmacs 21.5 en Linux

Lucid Emacs, basado en una versión alfa temprana de GNU Emacs 19, fue desarrollado a partir de 1991 por Jamie Zawinski y otros en Lucid Inc. Una de las bifurcaciones tempranas más conocidas en el desarrollo de software libre ocurrió cuando las bases de código de las dos versiones de Emacs divergieron y los equipos de desarrollo separados dejaron de intentar fusionarlas en un solo programa. [ 43 ] Lucid Emacs fue renombrado posteriormente como XEmacs . Su desarrollo es actualmente muy lento, con la versión estable más reciente 21.4.22 lanzada en enero de 2009 y la beta más reciente lanzada en junio de 2025; [ 44 ] mientras tanto, GNU Emacs ha implementado muchas características que antes eran exclusivas de XEmacs. [ 45 ]

Otras bifurcaciones de GNU Emacs

Otras bifurcaciones destacadas incluyen:

  • Aquamacs, basado en GNU Emacs (Aquamacs 3.2 se basa en la versión 24 de GNU Emacs y Aquamacs 3.3 en la versión 25), se centra en la integración con la interfaz de usuario de Apple Macintosh.
  • Meadow, una versión japonesa para Microsoft Windows, [ 46 ] adaptó el editor de texto Emacs de sistemas operativos basados ​​en UNIX a Microsoft Windows con algunas funciones adicionales. Su nombre proviene de la frase " Mejora multilingüe para GNU Emacs con ventajas de AD sobre Windows ". Meadow utiliza Netinstaller, similar al que se usa para la instalación de Cygwin . Esto permite a los usuarios instalar Meadow a su gusto, facilitando así su uso.

Varios editores de Emacs

uEmacs/Pk 4.0.15 en Linux
El pequeño editor tipo Emacs mg en OpenBSD 5.3. Edición de código fuente Ruby.
JOVE ejecutándose en un servidor Debian

En el pasado, proliferaron los proyectos destinados a producir versiones pequeñas de Emacs. GNU Emacs se diseñó inicialmente para ordenadores con un espacio de direcciones plano de 32 bits y al menos 1 MiB de RAM. [ 47 ] Dichos ordenadores eran estaciones de trabajo de gama alta y miniordenadores en la década de 1980, lo que generó la necesidad de reimplementaciones más pequeñas que se ejecutaran en hardware común de ordenadores personales . Los ordenadores actuales tienen potencia y capacidad más que suficientes para eliminar estas restricciones, pero más recientemente se han diseñado clones pequeños para que quepan en discos de instalación de software o para su uso en hardware menos potente. [ 48 ] 

Otros proyectos buscan implementar Emacs en un dialecto diferente de Lisp o en un lenguaje de programación completamente distinto. Aunque no todos reciben mantenimiento activo, estos clones incluyen:

  • MicroEMACS , que fue escrito originalmente por Dave Conroy y desarrollado posteriormente por Daniel Lawrence, y que existe en muchas variantes.
  • mg, originalmente llamado MicroGNUEmacs y, posteriormente, mg2a, una rama de dominio público derivada de MicroEMACS, diseñada para asemejarse más a GNU Emacs. Actualmente viene instalado por defecto en OpenBSD y macOS.
  • JOVE (Jonathan's Own Version of Emacs), la implementación no programable de Emacs creada por Jonathan Payne para sistemas tipo UNIX .
  • MINCE (MINCE Is Not Complete Emacs), una versión para CP/M y posteriormente para DOS, proviene de Mark of the Unicorn . MINCE evolucionó hasta convertirse en Final Word, que finalmente se transformó en el procesador de textos Borland Sprint .
  • Perfect Writer , una implementación de CP/M derivada de MINCE que se incluyó alrededor de 1982 como procesador de texto predeterminado en las primeras versiones de Kaypro II y Kaypro IV. Posteriormente se incluyó con Kaypro 10 como alternativa a WordStar .
  • Freemacs , una versión para DOS que utiliza un lenguaje de extensión basado en la expansión de macros de texto y que se ajusta al límite de memoria plana original de 64 KiB .
  • Zmacs , para la máquina Lisp del MIT y sus descendientes, implementado en ZetaLisp .
  • Epsilon , [ 49 ] un clon de Emacs de Lugaru Software. Las versiones para DOS, Windows, Linux, FreeBSD, Mac OS X y OS/2 se incluyen en la distribución. Utiliza un lenguaje de extensión que no es Lisp con sintaxis C y empleó una implementación muy temprana de búfer de shell de comandos concurrentes bajo el sistema MS-DOS de tarea única.
  • PceEmacs es el editor basado en Emacs para SWI-Prolog .
  • Hemlock , escrito originalmente en Spice Lisp y posteriormente en Common Lisp , forma parte de CMU Common Lisp y está influenciado por Zmacs . Más tarde, Lucid Common Lisp (como Helix), LispWorks y Clozure CL dieron origen a proyectos derivados. Existe también un proyecto Portable Hemlock, cuyo objetivo es proporcionar una versión de Hemlock compatible con diversas implementaciones de Common Lisp.
  • edwin , un editor de texto similar a Emacs incluido en MIT/GNU Scheme.

Editores con emulación de Emacs

  • El sistema de texto Cocoa utiliza parte de la misma terminología y entiende muchas combinaciones de teclas de navegación de Emacs. Esto es posible porque la interfaz de usuario nativa utiliza la tecla Comando (equivalente a Super) en lugar de la tecla Control . [ 50 ]
  • Eclipse (IDE) proporciona un conjunto de combinaciones de teclas para Emacs.
  • Epsilon (editor de texto) utiliza por defecto la emulación de Emacs y admite un modo vi.
  • GNOME Builder tiene un modo de emulación para Emacs.
  • GNU Readline es un editor de línea que reconoce las combinaciones de teclas de navegación estándar de Emacs. También cuenta con un modo de emulación de vi .
  • IntelliJ IDEA proporciona un conjunto de combinaciones de teclas para Emacs.
  • El IDE RAD Studio de Embarcadero tiene combinaciones de teclas integradas para Emacs para usar con Delphi y C++Builder . [ 51 ]
  • JED dispone de un modo de emulación para Emacs.
  • El editor Joe's Own emula las combinaciones de teclas de Emacs cuando se invoca como jmacs .
  • MATLAB proporciona combinaciones de teclas de Emacs para su editor. [ 52 ]
  • Multi-Edit proporciona combinaciones de teclas de Emacs para su editor.
  • KornShell tiene un modo de edición de línea de Emacs que es anterior a GNU Readline. [ 53 ]
  • Visual Studio Code dispone de varias extensiones para emular las combinaciones de teclas de Emacs.
  • Oracle SQL Developer permite guardar y cargar configuraciones alternativas de atajos de teclado. Una de las configuraciones integradas ofrece combinaciones de teclas similares a las de Emacs, incluyendo el uso de distintos comandos para lograr un comportamiento más parecido.

Características

Emacs es principalmente un editor de texto diseñado para manipular fragmentos de texto, aunque también es capaz de formatear e imprimir documentos como un procesador de textos, mediante la integración con programas externos como LaTeX , Ghostscript o un navegador web . Emacs proporciona comandos para manipular y visualizar de forma diferenciada unidades semánticas de texto, como palabras , oraciones , párrafos y estructuras de código fuente , como funciones . Además, incluye macros de teclado para ejecutar conjuntos de comandos de edición definidos por el usuario.

GNU Emacs es un editor de texto con visualización en tiempo real , ya que los cambios se muestran en pantalla a medida que se realizan. Este comportamiento es habitual en los editores de texto modernos, pero EMACS fue uno de los primeros en implementarlo. La alternativa consiste en tener que ejecutar un comando específico para visualizar el texto (por ejemplo, antes o después de modificarlo). Esto era común en editores de línea y de contexto anteriores (o simplemente más sencillos), como QED (BTS, CTSS, Multics), ed (Unix), ED (CP/M) y Edlin (DOS).

Arquitectura general

Casi toda la funcionalidad de Emacs, incluidas las operaciones básicas de edición como la inserción de caracteres en un archivo, se logra mediante funciones escritas en un dialecto del lenguaje de programación Lisp . El dialecto utilizado en GNU Emacs se conoce como Emacs Lisp (Elisp) y se desarrolló expresamente para portar Emacs a GNU y Unix . La capa de Emacs Lisp se asienta sobre un núcleo estable de servicios básicos y abstracción de plataforma escritos en el lenguaje de programación C , lo que permite portar GNU Emacs a una amplia variedad de sistemas operativos y arquitecturas sin modificar la semántica de implementación del sistema Lisp donde reside la mayor parte del editor. En este entorno Lisp, las variables y funciones se pueden modificar sin necesidad de recompilar o reiniciar Emacs, e incluso las versiones recién redefinidas de las características principales del editor se compilan y cargan de forma asíncrona en el entorno en vivo para reemplazar las definiciones existentes. Las características modernas de GNU Emacs incluyen compilación de código de bytes y código nativo para Emacs Lisp.

Toda la configuración se almacena en variables, clases y estructuras de datos, y se modifica simplemente actualizándolas en tiempo real. El uso de un dialecto Lisp en este caso representa una ventaja clave, ya que la sintaxis de Lisp se compone de las llamadas expresiones simbólicas (o expresiones sexpr), que pueden funcionar tanto como expresiones de código evaluables como formato de serialización de datos similar, pero más simple y general, a formatos conocidos como XML , JSON y YAML . De esta manera, en la práctica, hay poca diferencia entre personalizar las funcionalidades existentes y escribir otras nuevas, ya que ambas se realizan de la misma forma básica. Esto difiere operativamente de la mayoría de los editores extensibles modernos, como VS Code , en los que se utilizan lenguajes separados para implementar la interfaz y las funcionalidades del editor, así como para codificar su configuración y opciones definidas por el usuario. El objetivo del diseño abierto de Emacs es exponer de forma transparente los mecanismos internos de Emacs al usuario durante su uso normal, del mismo modo que se expondrían al desarrollador de Emacs que trabaja en el repositorio Git , y eliminar en la medida de lo posible la distinción entre usar Emacs y programar en Emacs, al tiempo que se proporciona un entorno de edición estable, práctico y con buena capacidad de respuesta para los usuarios novatos.

Datos interactivos

La estructura de datos principal para la edición de texto es el búfer , una región de memoria que contiene datos (generalmente texto) con atributos asociados. Los más importantes son:

  • El punto : el cursor de edición ;
  • La marca : una ubicación configurable que, junto con el punto, permite la selección de
  • La región : una colección de texto conceptualmente contigua a la que se aplicarán comandos de edición;
  • El nombre y el inodo del archivo que está visitando el búfer (si lo hay);
  • El directorio predeterminado , desde donde se ejecutarán por defecto todos los comandos del sistema operativo ;
  • Los modos del búfer , incluyendo un modo principal y posiblemente varios modos secundarios .
  • La codificación del búfer , el método mediante el cual Emacs representa los datos del búfer al usuario;
  • y una variedad de variables locales de búfer y estado de Emacs Lisp.

Los modos , en particular, son un concepto importante en Emacs, ya que proporcionan un mecanismo para desagregar la funcionalidad de Emacs en conjuntos de comportamientos y combinaciones de teclas relevantes para los datos de búferes específicos. Los modos principales proporcionan un paquete general de funciones y comandos relevantes para los datos de un búfer y la forma en que los usuarios podrían interactuar con él (por ejemplo, editar código fuente en un lenguaje específico, editar hexadecimal , ver el sistema de archivos, interactuar con Git , etc.), y los modos secundarios definen colecciones subsidiarias de funcionalidad aplicables a muchos modos principales (como auto-save-mode). Los modos secundarios se pueden activar o desactivar tanto localmente para cada búfer como globalmente para todos los búferes, mientras que los modos principales solo se pueden activar por búfer. Cualquier otro dato relevante para un búfer pero que no esté incluido en un modo se puede manejar simplemente enfocando ese búfer y modificando directamente los datos relevantes.

Cualquier interacción con el editor (como pulsaciones de teclas o clics del ratón) se realiza evaluando código Emacs Lisp, normalmente un comando , que es una función diseñada explícitamente para uso interactivo. Las teclas se pueden redefinir arbitrariamente y también se puede acceder a los comandos por nombre; algunos comandos evalúan código Emacs Lisp arbitrario proporcionado por el usuario de varias maneras (por ejemplo, una familia de eval-funciones, que operan sobre buffer, region, o individualmente expression). Incluso las entradas de usuario más simples (como caracteres imprimibles ) se ejecutan como funciones Emacs Lisp, como self-insert-command, vinculada por defecto a la mayoría de las teclas del teclado en un búfer de edición de texto típico, asignando la tecla utilizada para llamarla al carácter asociado definido por la configuración regional .

Por ejemplo, al presionar la ftecla en un búfer que acepta entrada de texto se evalúa el código , que inserta una copia de la constante de carácter en el punto . El , en este caso, está determinado por lo que Emacs denomina el argumento universal : todo el código de comando de Emacs acepta un valor numérico que, en su uso más simple, indica la repetición de una acción, pero en casos más complejos (donde la repetición no tiene sentido) puede generar otros comportamientos. Estos argumentos pueden proporcionarse a través de prefijos de comando, como + , o de forma más compacta + , que se expande a . Cuando no se proporciona ningún prefijo, el argumento universal es : cada comando se ejecuta implícitamente una vez, pero puede llamarse multiplicar, o de otra manera, cuando se proporciona con dicho prefijo. Dichos argumentos también pueden ser no positivos cuando tenga sentido que lo sean; depende de la función que acepta el argumento determinar, según su propia semántica, qué significa un número dado para ella. Un uso común es que las funciones realicen acciones en sentido inverso simplemente comprobando el signo del argumento universal, como un comando de ordenación que ordena en orden inverso por defecto y en orden inverso cuando se llama con un argumento negativo, utilizando el valor absoluto de su argumento como clave de ordenación (por ejemplo, ordenar en orden inverso por índice de columna (o delimitador) 7), o deshacer/rehacer, que son simplemente los opuestos entre sí (recorrer hacia adelante y hacia atrás un historial recursivo de diferencias por cierta cantidad de pasos a la vez).(self-insert-command1?f)?f1Controlu7fMeta7f(self-insert-command7?f)1-7

Lenguaje de comandos

Because of its relatively large vocabulary of commands, Emacs features a long-established command language, to concisely express the keystrokes necessary to perform an action. This command language recognises the following shift and modifier keys: Ctrl, Alt, ⇧ Shift, Meta, Super, and Hyper. Not all of these may be present on an IBM-style keyboard, though they can usually be configured as desired. These are represented in command language as the respective prefices: C-, A-, S-, M-, s-, and H-. Keys whose names are only printable with more than one character are enclosed in angle brackets. Thus, a keyboard shortcut such as Ctrl+Alt+⇧ Shift+F9 (check dependent formulas and calculate all cells in all open workbooks in Excel) would be rendered in Emacs command language as C-A-S-<f9>, while an Emacs command like Meta+sfCtrl+Meta+s (incremental file search by filename-matching regexp), would be expressed as M-s f C-M-s. Command language is also used to express the actions needed to invoke commands with no assigned shortcut: for example, the command scratch-buffer (which initialises a buffer in memory for temporary text storage and manipulation), when invoked by the user, will be reported back as M-x scra <return>, with Emacs scanning the namespace of contextually available commands to return the shortest sequence of keystrokes which uniquely lexicate it.

Dynamic display

Because Emacs predates modern standard terminology for graphical user interfaces, it uses somewhat divergent names for familiar interface elements. Buffers, the data that Emacs users interact with, are displayed to the user inside windows, which are tiled portions of the terminal screen or the GUI window, which Emacs refers to as frames; in modern terminology, an Emacs frame would be a window and an Emacs window would be a panel or split. Depending on configuration, windows can include their own scroll bars, line numbers, sometimes a 'header line' typically to ease navigation, and a mode line at the bottom (usually displaying buffer name, the active modes and point position of the buffer among others). The bottom of every frame is used for output messages (then called 'echo area') and text input for commands (then called 'minibuffer').

En general, los elementos de visualización de Emacs (ventanas, marcos, etc.) no pertenecen a ningún dato o proceso específico. Los búferes no están asociados a ventanas, y se pueden abrir varias ventanas en el mismo búfer, por ejemplo, para seguir diferentes partes de un texto largo una al lado de la otra sin tener que desplazarse, y varios búferes pueden compartir el mismo texto, por ejemplo, para aprovechar diferentes modos principales en un archivo con varios idiomas. Del mismo modo, las instancias de Emacs no están asociadas a marcos particulares, y se pueden abrir varios marcos que muestren un único proceso de Emacs en ejecución, por ejemplo, un marco por pantalla en una configuración de varios monitores , o un marco de terminal conectado por ssh desde un sistema remoto y un marco gráfico que muestre el mismo proceso de Emacs a través del monitor del sistema local.

Así como los buffers no requieren ventanas, los procesos de Emacs en ejecución no requieren marcos, y un patrón de uso común es implementar Emacs como un servidor de edición : ejecutándolo como un demonio sin interfaz gráfica y conectándose a él a través de un cliente que genera marcos. Este servidor puede estar disponible en cualquier situación donde se requiera un editor, simplemente declarando el programa cliente como el del usuario o variable. Dicho servidor continúa ejecutándose en segundo plano, administrando cualquier proceso hijo, acumulando stdin desde tuberías, puertos o FIFOs abiertos, realizando acciones periódicas o preprogramadas, y recordando el historial de deshacer del buffer, los fragmentos de texto guardados, el historial de comandos y otro estado del usuario entre sesiones de edición. En este modo de operación, Emacs se superpone a la funcionalidad de programas como screen y tmux .EDITORVISUAL

Debido a su separación entre la visualización y la edición, Emacs puede mostrarse de forma prácticamente idéntica en cualquier dispositivo más complejo que un terminal simple , incluyendo la provisión de elementos gráficos típicos de WIMP en terminales de texto con suficientes funciones; si bien los marcos gráficos son el modo de visualización preferido, ya que proporcionan un superconjunto estricto de las características de los marcos de los terminales de texto.

Personalización y extensibilidad

  • Las acciones del usuario pueden grabarse en macros y reproducirse para automatizar tareas complejas y repetitivas. Esto suele hacerse de forma puntual, descartando cada macro tras su uso, aunque pueden guardarse y utilizarse posteriormente.
    • Debido a la uniformidad en la definición de las características de Emacs en términos de Emacs Lisp, lo que se considera una "acción de usuario" para la automatización de macros es flexible: las macros pueden incluir, por ejemplo, pulsaciones de teclas, comandos, clics del ratón, otras macros y cualquier acción que pueda ejecutarse mediante estas. Por lo tanto, las macros pueden ser recursivas y pueden definirse e invocarse dentro de otras macros.
  • Al iniciarse, Emacs ejecuta un script de Emacs Lisp llamado ~/.emacs (las versiones recientes también buscan ~/emacs.el , ~/.emacs.d/init.el y ~/.config/emacs/init.el , [ 54 ] así como variaciones similares en ~/.config/emacs/early-init.el . [ 55 ] Emacs lee primero early-init.el si existe, y se puede usar para configurar o interrumpir las características principales de Emacs antes de que se carguen, como el sistema de visualización gráfica o el gestor de paquetes . Luego ejecutará la primera versión de .emacs o init.el que encuentre, ignorando el resto. Este archivo de personalización personal puede ser arbitrariamente largo y complejo, pero el contenido típico incluye:
    • Configurar variables globales o invocar funciones para personalizar el comportamiento de Emacs, por ejemplo(set-default-coding-systems 'utf-8)
    • Atajos de teclado para anular los predeterminados y agregar accesos directos a comandos que el usuario considere convenientes pero que no tengan un atajo de teclado por defecto. Ejemplo:(global-set-key(kbd"C-x C-b")'ibuffer)
    • Carga, habilitación e inicialización de extensiones (Emacs incluye muchas extensiones, pero solo unas pocas se cargan por defecto).
    • Configurar ganchos de eventos para ejecutar código arbitrario en momentos específicos, por ejemplo, para recompilar automáticamente el código fuente después de guardar un búfer ( after-save-hook).
    • Ejecutar archivos arbitrarios, generalmente para dividir un archivo de configuración demasiado largo en partes manejables y homogéneas ( ~/.emacs.d/ y ~/elisp/ son ubicaciones tradicionales para estos scripts personales).
  • La extensión de personalización permite al usuario configurar propiedades como el esquema de colores de forma interactiva, directamente desde Emacs, de una manera más sencilla que modificando variables en .emacs . Ofrece búsqueda, descripciones y texto de ayuda, selección múltiple de opciones, restauración de valores predeterminados, modificación de la instancia de Emacs en ejecución sin necesidad de recargarla, y otras funciones similares a las preferencias de otros programas. Los valores personalizados se guardan automáticamente en .emacs (o en otro archivo designado).
  • Los temas , que afectan a la elección de fuentes y colores, se definen como archivos Emacs Lisp y se seleccionan a través de la extensión customize.
  • Los modos permiten editar diversos lenguajes de programación (por ejemplo, emacs-lisp-mode, c-mode, java-mode, ESS para R) cambiando las fuentes para resaltar el código y las combinaciones de teclas modificadas (foreword-function frente a forward-page). Otros modos incluyen opciones para editar hojas de cálculo (dismal) y texto estructurado.

Autodocumentación

La primera versión de Emacs incluía una biblioteca de ayuda con documentación para cada comando, variable y función interna. Por ello, sus defensores la describieron como un software autodocumentado, ya que proporciona al usuario información sobre sus características habituales y su estado actual. Cada función incluye una cadena de documentación que se muestra al usuario a petición, una práctica que posteriormente se extendió a lenguajes de programación como Lisp , Java , Perl y Python . Este sistema de ayuda permite al usuario acceder al código fuente de cada función, ya sea de una biblioteca integrada o de una biblioteca de terceros.

Emacs también incluye un tutorial integrado . Emacs muestra instrucciones para ejecutar comandos de edición sencillos e invoca el tutorial cuando se inicia sin ningún archivo para editar. El tutorial es obra de Stuart Cracraft y Richard Stallman.

Cultura

Iglesia de Emacs

La Iglesia de Emacs , fundada por Richard Stallman , es una religión paródica creada para los usuarios de Emacs. [ 56 ] 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 a su uso; más bien, lo llama anatema de software propietario . («Usar una versión gratuita de vi no es un pecado, sino una penitencia ». [ 57 ] ) La Iglesia de Emacs tiene su propio grupo de noticias , alt.religion.emacs , [ 58 ] que contiene publicaciones que pretenden apoyar esta religión paródica. Los partidarios de vi han creado un Culto de vi opuesto . [ 59 ]

Stallman se ha referido en tono de broma a sí mismo como San I GNUcius , un santo en la Iglesia de Emacs. [ 60 ] Esto es una referencia a Ignacio de Antioquía , un padre de la Iglesia primitiva venerado en el cristianismo .

Meñique de Emacs

Existe una creencia popular que atribuye una lesión por esfuerzo repetitivo, conocida coloquialmente como " meñique de Emacs ", a la fuerte dependencia de Emacs de las teclas modificadoras, aunque no se han realizado estudios que demuestren que Emacs cause más problemas de este tipo que otros programas informáticos que hacen un uso intensivo del teclado.

Los usuarios han abordado este problema mediante diversos enfoques. Algunos recomiendan simplemente usar las dos teclas Control en los teclados de PC típicos, como las teclas Shift, al escribir a máquina para evitar forzar demasiado el dedo meñique izquierdo; un uso adecuado del teclado reducirá la lesión por esfuerzo repetitivo (LER). [ 61 ]

  • Usando las combinaciones de teclas de ErgoEmacs (con modo menor ergoemacs-mode). [ 62 ]
  • Personalizar la distribución completa del teclado para mover las teclas de Emacs estadísticamente más frecuentes a lugares más apropiados. [ 63 ]
  • evil-mode, una capa de emulación avanzada de Vim .
  • god-mode, que proporciona un enfoque similar al de vim con un modo para introducir comandos de Emacs sin teclas modificadoras.
  • Utilizando la distribución de teclas personalizada que ofrecen Spacemacs y Doom Emacs , proyectos donde la tecla se usa como tecla principal para iniciar secuencias de control. Estos proyectos también incorporan ampliamente ambos y el último . [ 64 ]space barevil-modegod-mode
  • Darle una doble función a una tecla de acceso más cómodo, como la barra espaciadora, de modo que funcione como tecla Control cuando se presiona en combinación con otras teclas. Los teclados ergonómicos o los teclados con un mayor número de teclas adyacentes a la barra espaciadora, como los teclados japoneses , también permiten controlar con el pulgar otras teclas modificadoras como Meta o Shift . [ 65 ]
  • Utilizando un subconjunto ergonómico limitado de combinaciones de teclas y accediendo a otras funciones escribiendo . Mx también se puede reasignar.M-x <command-name>

Las soluciones de hardware incluyen teclados especiales como el Contoured Keyboard de Kinesis , que coloca las teclas modificadoras en una posición que facilita su uso con el pulgar , o el teclado Natural de Microsoft , cuyas teclas modificadoras de gran tamaño están ubicadas simétricamente a ambos lados del teclado y se pueden presionar con la palma de la mano. También se pueden utilizar pedales.

El botón para el dedo meñique en Emacs es un desarrollo relativamente reciente. El teclado Space-cadet, sobre el que se desarrolló Emacs, tenía teclas Control de gran tamaño situadas junto a la barra espaciadora y de fácil acceso con el pulgar.

Terminología

La palabra emacs a veces se pluraliza como emacsen , por analogía fonética con boxen y VAXen , refiriéndose a diferentes variedades de Emacs. [ 66 ]

Véase también

Referencias

  1. 1 2 Greenberg, Bernard S. (8 de abril de 1996). Multics Emacs: Historia, diseño e implementación . Recuperado el 29 de junio de 2026 .
  2. 1 2 3 "Preguntas frecuentes sobre GNU Emacs" .
  3. 1 2 3 4 Adrienne G. Thompson. "MACSimizing TECO" . Archivado del original el 24-10-2013 . Recuperado el 26-02-2012 .
  4. "Introducción al tutorial de GNU Emacs" . Para que un editor se llame "emacs", el requisito principal es que sea totalmente extensible con un lenguaje de programación real, no solo con un lenguaje de macros.
  5. "Guía de referencia de bolsillo de GNU Emacs" . GNU Emacs es el editor más popular y extendido de la familia de editores Emacs.
  6. "Manual de GNU Emacs" . FSF . Consultado el 24 de noviembre de 2012 .
  7. Zawinski, Jamie (29-10-2007). "Cronología de Emacs" . www.jwz.org . Consultado el 31-07-2023 .
  8. "Sobre el origen de Emacs en 1976 (artículos del blog de Emacs)" . onlisp.co.uk . Consultado el 24 de julio de 2024 .
  9. Eli Zaretskii (14 de agosto de 2025). "Emacs 30.2 lanzado" . Consultado el 16 de agosto de 2025 .
  10. "Manual de usuario de Tramp" . Free Software Foundation . Consultado el 4 de abril de 2009 .
  11. "Presentamos Elfeed, un lector de feeds web para Emacs" .
  12. "Edición colaborativa mediante tipos de datos replicados sin conflictos" .
  13. "Diversiones" . Finalmente, si te sientes frustrado, intenta describirle tus problemas a la famosa psicoterapeuta Eliza. Solo haz Mx doctor.
  14. Zawinski, Jamie (21-06-2005) [1999]. "Cronología de Emacs" . Recuperado el 11 de agosto de 2015 .
  15. A Richard Stallman se le suele atribuir la autoría de la creación, pero como escribió Daniel Weinreb : «El Emacs original (basado en TECO) fue creado y diseñado por Guy L. Steele Jr. y David Moon. Una vez que lo pusieron en funcionamiento y se consolidó como el editor de texto estándar en el laboratorio de IA, Stallman se hizo cargo de su mantenimiento». El propio Moon respondió: «Todo cierto, hasta donde recuerdo. Pero, para ser justos, debo decir que Stallman mejoró enormemente Emacs después de "liberarlo" de Guy y de mí». Véase Weinreb, Dan (11 de noviembre de 2007), «Refutación a la historia de Stallman sobre la formación de Symbolics y LMI» , blog de Dan Weinreb: software e innovación , archivado del original el 1 de enero de 2009..
  16. "Historia de Emacs" . Manual de funcionamiento interno de XEmacs . 11 de diciembre de 2006. Consultado el 22 de agosto de 2007 .
  17. Allombert, Bill. "Concurso de popularidad de Debian" . Informe de los editores . Debian . Consultado el 22 de noviembre de 2011 .
  18. "Los 10 programas de código abierto más antiguos e importantes" . ZDNet .
  19. Raymond, Eric S.; Cameron, Debra; Rosenblatt, Bill (1996). Learning GNU Emacs, 2nd Edition . Sebastopol, CA: O'Reilly. pp. 408–409 . ISBN  1-56592-152-6.
  20. Williams, Sam (2002). Free as in Freedom: Richard Stallman's Crusade for Free Software . Sebastopol, CA: O'Reilly Media. p. 82. ISBN  0-596-00287-4.
  21. Arthur Samuel (marzo de 1980). "Essential E" (PDF) . Consultado el 19 de abril de 2020 .
  22. "EMACS vs. vi: La interminable 'guerra santa' de los geeks"" . Archivado del original el 26-11-2014 . Recuperado el 30-05-2014 ."EMACS, como tal, en realidad comenzó como un proyecto de estándares", escribe Guy Steele en un correo electrónico.
  23. Stallman, Richard M. (1987). "El editor de pantalla completa de EMACS" . GARB . N.° de mayo de 1987. Lysator, Universidad de Linköping. págs. 8–11 . Recuperado el 14 de septiembre de 2007 .  
  24. Reynolds, Craig (1992-02-10). Wiseman, David G. (ed.). "El koan del nombre Emac Bolio" . David G. Wiseman: Historias del folclore informático . Archivado del original el 16 de enero de 2003. Un novato arrogante le dijo una vez a Stallman: "Puedo adivinar por qué el editor se llama Emacs, pero ¿por qué el justificador se llama Bolio?". Stallman respondió con firmeza: "Los nombres son solo nombres. Emacs & Bolio's es el nombre de una popular heladería en Boston. Ninguno de estos hombres tuvo nada que ver con el software". Con su pregunta respondida, pero a la vez sin respuesta, el novato se dio la vuelta para marcharse, pero Stallman lo llamó: "Ni Emacs ni Bolio tuvieron nada que ver con la heladería".
  25. 1 2 Stallman, Richard (26 de marzo de 1981). EMACS: El editor de visualización extensible, personalizable y autodocumentado (PDF) (Informe técnico). MIT AI Lab. AI Memo 519a . Recuperado el 7 de enero de 2011 .
  26. Leigh Klotz (29 de agosto de 2007). "Correo electrónico citado en "Ten cuidado con lo que bromeas"" . The New York Times . Consultado el 1 de mayo de 2010 .
  27. "Comentario del autor de ZWEI, Dan Weinreb" . Escribí la segunda versión de Emacs: la implementación para máquina Lisp, cuya especificación era "hacer lo que hace el Emacs original de Stallman para PDP-10", y a partir de ahí desarrollé el código. Es muchísimo. Mike McMahon y yo dedicamos incontables horas a implementar tantos comandos para crear ZWEI/Zmacs.
  28. Owen Theodore Anderson (enero de 1979). "Diseño e implementación de un sistema de escritura de editor orientado a la visualización" (PDF) . Consultado el 9 de septiembre de 2012 .
  29. "Emacs" . 17 de diciembre de 2017.
  30. Steve Zimmerman (13 de junio de 1983). "Aviso importante para los usuarios de EMACS" .
  31. "Historia de Emacs" .
  32. "emacs-devel msg 00872 (2014-09-29)" . En retrospectiva, la versión 24.3 debería haberse llamado 25.1 y la 24.4, 26.1. La extensión .N debería reservarse únicamente para versiones de corrección de errores, y ni la 24.3, ni la 24.4, ni la previamente planificada 24.5 son versiones de corrección de errores.
  33. Stoll, Clifford (1988). "Stalking the wily hacker" . Communications of the ACM . 31 (5): 484– 497. doi : 10.1145/42411.42412 . S2CID 6956966 . 
  34. "GNU Emacs" . Open Hub . Consultado el 25 de noviembre de 2017 .
  35. Raymond, Eric (12 de noviembre de 2014). "Nuevo repositorio Git disponible" . Recuperado el 25 de noviembre de 2017 .
  36. Stallman, Richard (22 de febrero de 2008). "Re: Buscando un nuevo mantenedor o equipo de Emacs" . Lista de correo de gnu.org . Consultado el 25 de noviembre de 2017 .
  37. McNamara, Paul (25 de febrero de 2008). "Stallman habla sobre la entrega de GNU Emacs, su futuro y la importancia de la nomenclatura" . Network World . Archivado del original el 23 de mayo de 2008. Recuperado el 25 de noviembre de 2017 .
  38. Chirgwin, Richard (5 de noviembre de 2015). "Emacs tiene un nuevo mantenedor tras la partida de Richard Stallman" . The Register . Consultado el 25 de noviembre de 2017 .
  39. "¡Tres hurras por Eli!" . lists.gnu.org .
  40. "Stefen Kangas ahora es mantenedor de Emacs" . lists.gnu.org .
  41. "Un nuevo mantenedor de Emacs: Andrea Corallo" . lists.gnu.org .
  42. "Índice de /git/emacs.git/" . git.savannah.gnu.org . Consultado el 30-08-2025 .
  43. Stephen J., Turnbull. "XEmacs vs. GNU Emacs" . Consultado el 2 de octubre de 2012 .
  44. "XEmacs: La próxima generación de Emacs" . 15 de junio de 2025. Consultado el 23 de junio de 2025 .
  45. "XEmacs ha muerto. ¡Larga vida a XEmacs!" .
  46. Página principal - Wiki de Meadow Archivada el 16/02/2012 en Wayback Machine
  47. "Mis experiencias con Lisp y el desarrollo de GNU Emacs" . En aquella época, en 1985, había gente que tenía ordenadores de un megabyte sin memoria virtual. Querían poder usar GNU Emacs. Esto significaba que tenía que mantener el programa lo más pequeño posible.
  48. "GNU Zile (Zile es Emacs con pérdida de memoria) - Resumen" . Los ordenadores modernos tienen recursos más que suficientes para iniciar y ejecutar Emacs en una fracción de segundo, y probablemente Emacs sea lo que buscas. Zile es un clon de Emacs pequeño, rápido y potente. Es útil para instalaciones con poco espacio en disco (por ejemplo, en disquete), máquinas con poca memoria o sesiones de edición rápidas, especialmente en máquinas remotas o como un usuario diferente, por ejemplo, root.
  49. "Página principal de Lugaru Software" .
  50. "Sistema de texto de cacao" .
  51. "Atajos de teclado de Emacs (sistema)" .
  52. "Configuración de combinaciones de teclas para la ventana de comandos y el editor" . Blogs de Mathworks . 11 de mayo de 2007. Consultado el 18 de agosto de 2019 .
  53. Bolsky, Morris I.; Korn, David G. (1989). «Agradecimientos». El lenguaje de comandos y programación KornShell . Englewood Cliffs, NJ: Prentice Hall. págs. xii. ISBN  0-13-516972-0.
  54. "Archivo de inicialización" .
  55. "Archivo de inicialización temprana" .
  56. "San IGNUcio - Richard Stallman" . Consultado el 29 de enero de 2015 .
  57. "Transcripción selectiva íntegra de la charla de Richard M. Stallman en la ANU" . Archivado del original el 4 de octubre de 2011. Consultado el 29 de enero de 2015 .
  58. Grupo de noticias alt.religion.emacs
  59. "Evangelio - Proyecto GNU - Fundación del Software Libre" .
  60. "San IGNUcius - Richard Stallman" . www.stallman.org . Consultado el 27 de marzo de 2018 .
  61. "Emacs: Por qué no deberías intercambiar las teclas {Bloq Mayús, Control}" . En la mecanografía táctil, las teclas modificadoras vienen en pares, como la tecla Mayús. La forma ergonómica aceptada de presionar combinaciones de modificadores es usar una mano para presionar la tecla modificadora y la otra para presionar la tecla de la letra. Usar ambas manos evita forzar el músculo de una sola mano.
  62. "Página principal de ErgoEmacs" . Consultado el 1 de septiembre de 2018 .
  63. "Diseño de Keymacs" . GitHub . 15 de septiembre de 2022.
  64. "Spacemacs" . GitHub . Consultado el 20 de abril de 2015 .
  65. "Modificador At Home de Evdev" . Consultado el 14 de abril de 2015 .
  66. «VAXen» . Catb.org . Consultado el 8 de noviembre de 2009 .

Bibliografía

  • Ciccarelli, Eugene (1978). Introducción al editor Emacs . Cambridge, Massachusetts: Laboratorio de Inteligencia Artificial del MIT. AIM-447.PDF
  • Stallman, Richard M. (1981) [1979]. EMACS: El editor de pantalla extensible, personalizable y autodocumentado . Cambridge, Massachusetts: Laboratorio de Inteligencia Artificial del MIT. AIM-519A.PDF HTML
  • Stallman, Richard M. (2002). Manual de GNU Emacs (15.ª  ed.). GNU Press. ISBN 1-882114-85-X.
  • Stallman, Richard M. (2002). "Mis experiencias con Lisp y el desarrollo de GNU Emacs" . Recuperado el 1 de febrero de 2007 .
  • Chassel, Robert J. (2004). Introducción a la programación en Emacs Lisp . GNU Press. ISBN 1-882114-56-6Archivado del original el 3 de julio de 2013. Consultado el 16 de abril de 2014 .
  • Glickstein, Bob (abril de 1997). Escritura de extensiones para GNU Emacs . O'Reilly & Associates. ISBN 1-56592-261-1.
  • Cameron, Debra; Elliott, James; Loy, Marc; Raymond, Eric; Rosenblatt, Bill (diciembre de 2004). Aprendiendo GNU Emacs, 3.ª edición . O'Reilly & Associates. ISBN 0-596-00648-9.
  • Finseth, Craig A. (1991). El arte de la edición de textos -o- Emacs para el mundo moderno . Springer-Verlag & Co. ISBN 978-1-4116-8297-9.
  • Thompson, Adrienne G. (2009). "MACSimizing TECO" . Recuperado el 26 de febrero de 2012 .
  • Sitio web oficial
  • Lista de implementaciones de Emacs
  • Descripción general arquitectónica