Emacs / ˈiːm æ ks / , originalmente llamado EMACS (acrónimo de "Editor Macros"), [1] [2] [3] es una familia de editores de texto que se caracterizan por su extensibilidad . [4] El manual de la variante más utilizada, [5] GNU Emacs , la 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] y el trabajo en GNU Emacs, descendiente directo del original, está en curso; su última versión es la 29.2, lanzada en enero de 2024. [8]
Emacs tiene más de 10.000 comandos integrados y su interfaz de usuario permite al usuario combinar estos comandos en macros para automatizar el trabajo. Las implementaciones de Emacs suelen incluir un dialecto del lenguaje de programación Lisp , lo que permite a los usuarios y desarrolladores escribir nuevos comandos y aplicaciones para el editor. Se han escrito extensiones para, entre otras cosas, administrar archivos , acceso remoto , [9] correo electrónico , esquemas , multimedia , integración de Git y canales RSS , [10] así como implementaciones de ELIZA , Pong , Conway's Life , Snake . , Dunnet y Tetris . [11]
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 . [12] [1] [2] [3] [13] Se inspiró en las ideas de los editores de macros TECO TECMAC y TMACS. [14]
La versión más popular y portada de Emacs es GNU Emacs, que fue creada por Richard Stallman para el Proyecto GNU . [15] XEmacs es una variante que se ramificó de GNU Emacs en 1991. GNU Emacs y XEmacs usan dialectos Lisp similares y son, en su mayor parte, compatibles entre sí. El desarrollo de XEmacs está inactivo.
GNU Emacs es, junto con vi , uno de los dos principales contendientes en las tradicionales guerras de editores de la cultura Unix . GNU Emacs se encuentra entre los proyectos gratuitos y de código abierto más antiguos que aún están en desarrollo. [dieciséis]
El desarrollo de Emacs comenzó durante la década de 1970 en el MIT AI Lab , cuyas computadoras PDP-6 y PDP-10 usaban el sistema operativo Incompatible Timesharing System (ITS) que presentaba un editor de línea predeterminado conocido como Tape 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 agregar texto, editar texto existente o mostrar el documento. No se pueden colocar caracteres directamente en un documento escribiéndolos en TECO, sino que se ingresa un carácter ('i') en el lenguaje de comando de TECO diciéndole que cambie al modo de ingreso, ingrese los caracteres requeridos, tiempo durante el cual el texto editado no se mostró en la pantalla y finalmente ingrese un carácter (<esc>) para volver el editor al modo de comando. (Se utilizó una técnica similar para permitir la sobreescritura). 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 [18] y vio el editor E del laboratorio , escrito por Fred Wright. [19] 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 agregado a TECO un modo combinado de visualización y edición llamado Control-R que permitía actualizar la visualización de la pantalla cada vez que el usuario pulsaba una tecla. Stallman volvió a implementar este modo para que se ejecutara de manera eficiente y luego agregó una función macro al modo de edición de pantalla de TECO que permitía al usuario redefinir cualquier pulsación de tecla para ejecutar un programa TECO. [3]
E tenía otra característica de la que TECO carecía: 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 la computadora era generalmente pequeña debido al costo, y era una característica de TECO que permitía editar secuencialmente solo una página a la vez. en el orden de las páginas del archivo. En lugar de adoptar el enfoque de E de estructurar el archivo para acceso aleatorio a páginas en el disco, Stallman modificó TECO para manejar búferes grandes de manera más eficiente y cambió su método de administració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 hizo popular 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. [20] La implementación finalizada de Steele y Stallman incluyó instalaciones para ampliar y documentar el nuevo conjunto de macros. [3] El sistema resultante se llamó EMACS, que significa Editing MACroS o, alternativamente, E con MACroS . Stallman eligió el nombre Emacs "porque <E> no se utilizaba como abreviatura en ITS en ese momento". [21] Un koan hacker apócrifo alega que el programa lleva el nombre de Emack & Bolio's , una popular heladería de Boston . [22] El primer sistema EMACS operativo existió a finales de 1976. [23]
Stallman vio un problema en demasiada personalización y bifurcación de facto y estableció ciertas condiciones de uso. [ cita necesaria ] Más tarde escribió: [23]
EMACS se distribuyó sobre la base del intercambio comunitario, lo que significa que todas las mejoras me deben ser devueltas para que las incorpore y las distribuya.
El Emacs original, como TECO, se ejecutaba sólo en el PDP-10 con ITS. Su comportamiento era lo suficientemente diferente al de TECO como para considerarlo un editor de texto por derecho propio y rápidamente se convirtió en el programa de edición estándar en ITS. Mike McMahon portó Emacs de ITS a los sistemas operativos TENEX y TOPS-20 . Otros contribuyentes a las primeras versiones de Emacs incluyen a Kent Pitman , Earl Killian y Eugene Ciccarelli. En 1979, Emacs era el editor principal utilizado en el laboratorio de IA del MIT y su Laboratorio de Ciencias de la Computación. [24]
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 [25] ( ZWEI Was EINE Inicialmente ), que fueron escritos para la máquina Lisp por Mike McMahon y Daniel Weinreb , y Sine ( Sine Is Not Eine ), [26] que fue 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 Cambridge de Honeywell . Multics Emacs fue posteriormente mantenido por Richard Soley , quien desarrolló el editor similar a NILE Emacs para el Proyecto NIL, y por Barry Margolin. Muchas versiones de Emacs, incluido GNU Emacs, adoptarían posteriormente 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 ejecutó en Unix [ cita requerida ] , fue escrito en C y usó Mocklisp , un lenguaje con Lisp- como la sintaxis, como un lenguaje de extensión.
Los primeros anuncios de CCA EMACS de Computer Corporation of America (Steve Zimmerman) [27] aparecieron en 1984. [28] Las comparaciones de 1985 con GNU Emacs, cuando salió, mencionaban gratis frente a 2.400 dólares. [29] [ cita irrelevante ]
Richard Stallman comenzó a trabajar en GNU Emacs en 1984 para producir una alternativa de software libre al propietario Gosling Emacs. GNU Emacs se basó inicialmente en Gosling Emacs, pero el reemplazo por parte de Stallman de su intérprete Mocklisp con un verdadero intérprete Lisp requirió que se reescribiera casi todo su código. Este se convirtió en el primer programa lanzado 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, el primer lanzamiento público, se realizó el 20 de marzo de 1985. La primera versión ampliamente distribuida de GNU Emacs fue la versión 15.34, lanzada más tarde en 1985. Las primeras versiones de GNU Emacs estaban numeradas como 1.xx , y 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 . [30] En septiembre de 2014, se anunció en la lista de correo de GNU emacs-devel que GNU Emacs adoptaría una estrategia de lanzamiento rápido y que los números de versiones aumentarían más rápidamente en el futuro. [31]
GNU Emacs ofrecía más funciones que Gosling Emacs, en particular un Lisp con todas las funciones como lenguaje de extensión, y pronto reemplazó a Gosling Emacs como el editor de facto de Unix Emacs. Markus Hess aprovechó una falla de seguridad en el subsistema de correo electrónico de GNU Emacs en su ola de craqueo de 1986 en la que obtuvo acceso de superusuario a computadoras Unix. [32]
La mayor parte de la funcionalidad de GNU Emacs se implementa a través de un lenguaje de programación llamado Emacs Lisp . Debido a que alrededor del 70% de GNU Emacs está escrito en el lenguaje de extensión Emacs Lisp, [33] solo es necesario portar el núcleo C que implementa el intérprete Emacs Lisp. Esto hace que portar Emacs a una nueva plataforma sea considerablemente menos difícil que portar un proyecto equivalente que consista únicamente en código nativo.
El desarrollo de GNU Emacs estuvo 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 una única troncal CVS hasta 2008 y luego se cambió a Bazaar DVCS . El 11 de noviembre de 2014, el desarrollo se trasladó a Git . [34]
Richard Stallman ha seguido siendo el principal mantenedor de GNU Emacs, pero en ocasiones se ha alejado de ese cargo. Stefan Monnier y Chong Yidong fueron mantenedores de 2008 a 2015. [35] [36] John Wiegley fue nombrado mantenedor en 2015 después de una reunión con Stallman en el MIT. [37] A principios de 2014, GNU Emacs ha tenido 579 confirmadores individuales a lo largo de su historia. [38]
Lucid Emacs, basado en una de las primeras versiones alfa de GNU Emacs 19, fue desarrollado a principios de 1991 por Jamie Zawinski y otros en Lucid Inc. Una de las primeras bifurcaciones más conocidas en el desarrollo de software libre se produjo cuando las bases de código de las dos versiones de Emacs divergieron. y los equipos de desarrollo separados cesaron sus esfuerzos por fusionarlos nuevamente en un solo programa. [39] Desde entonces, Lucid Emacs pasó a llamarse XEmacs . Su desarrollo está actualmente inactivo, con la versión estable más reciente 21.4.22 lanzada en enero de 2009 (mientras que se lanzó una versión beta en 2013), mientras que GNU Emacs ha implementado muchas características que antes eran exclusivas de XEmacs. [40] [ se necesita una mejor fuente ]
Otras bifurcaciones notables incluyen:
En el pasado proliferaron los proyectos destinados a producir versiones pequeñas de Emacs. GNU Emacs estaba inicialmente dirigido a computadoras con un espacio de direcciones plano de 32 bits y al menos 1 MiB de RAM. [42] Estas computadoras eran estaciones de trabajo y minicomputadoras de alta gama en la década de 1980, y esto dejó la necesidad de reimplementaciones más pequeñas que se ejecutaran en hardware de computadora personal común . Las computadoras actuales tienen energía y capacidad más que suficiente para eliminar estas restricciones, pero más recientemente se han diseñado pequeños clones para caber en discos de instalación de software o para usarse en hardware menos capaz. [43]
Otros proyectos apuntan a implementar Emacs en un dialecto diferente de Lisp o en un lenguaje de programación completamente diferente. Aunque no todos se mantienen activamente, estos clones incluyen:
Emacs es principalmente un editor de texto y está diseñado para manipular fragmentos de texto, aunque es capaz de formatear e imprimir documentos como un procesador de textos interactuando con programas externos como LaTeX , Ghostscript o un navegador web. Emacs proporciona comandos para manipular y mostrar diferencialmente unidades semánticas de texto como palabras , oraciones , párrafos y construcciones de código fuente como funciones . También cuenta con macros de teclado para realizar lotes de comandos de edición definidos por el usuario.
GNU Emacs es un editor de visualización en tiempo real , ya que sus ediciones se muestran en pantalla a medida que ocurren. Este es un comportamiento estándar para los editores de texto modernos, pero EMACS fue uno de los primeros en implementarlo. La alternativa es tener que emitir un comando distinto para mostrar el texto (por ejemplo, antes o después de modificarlo). Esto era común en editores de línea y contexto anteriores (o simplemente más simples), como QED (BTS, CTSS, Multics), ed (Unix), ED (CP/M) y Edlin (DOS).
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 fue desarrollado expresamente para portar Emacs a GNU y Unix . La capa 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 se encuentra la mayoría de los sistemas operativos. vive el editor. En este entorno Lisp, las variables y funciones se pueden modificar sin necesidad de reconstruir o reiniciar Emacs, e incluso las versiones recientemente redefinidas de las funciones principales del editor se compilan y cargan de forma asincrónica en el entorno en vivo para reemplazar las definiciones existentes. El GNU Emacs moderno presenta 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 vivo. El uso de un dialecto Lisp en este caso es una ventaja clave, ya que la sintaxis Lisp consta de las llamadas expresiones simbólicas (o sexprs), que pueden actuar como expresiones de código evaluables y como un formato de serialización de datos similar, pero más simple y más. generales que los conocidos como XML , JSON y YAML . De esta manera, en la práctica hay poca diferencia entre personalizar funciones existentes y escribir otras nuevas, las cuales se logran de la misma manera básica. Esto es operativamente diferente 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 características del editor y para codificar su configuración y opciones definidas por el usuario. El objetivo del diseño abierto de Emacs es exponer de forma transparente las partes internas de Emacs al usuario de Emacs durante el uso normal de la misma manera que estarían expuestas al desarrollador de Emacs que trabaja en el árbol git , y colapsar la distinción tanto como sea posible. entre el uso de Emacs y la programación de Emacs, sin dejar de proporcionar un entorno de edición estable, práctico y responsivo para usuarios novatos.
La estructura principal de datos de 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 de ellos son:
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 datos de buffers 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 pueden interactuar con ellos (por ejemplo, editar el código fuente en un idioma específico, editar hexadecimal , ver el sistema de archivos, interactuar con git , etc.), y Los modos menores definen colecciones subsidiarias de funcionalidades aplicables en muchos modos principales (como auto-save-mode
). Los modos menores se pueden activar o desactivar tanto localmente en cada búfer como globalmente en todos los búfer, 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 en vivo los datos relevantes directamente.
Cualquier interacción con el editor (como presionar teclas o hacer clic en un botón del mouse) se realiza evaluando el código Emacs Lisp, generalmente un comando , que es una función diseñada explícitamente para uso interactivo. Las claves 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, operando en buffer
, region
o individualmente expression
). Incluso las entradas de usuario más simples (como caracteres imprimibles ) se efectúan como funciones de Emacs Lisp, como self-insert-command
, vinculadas de forma predeterminada a la mayoría de las teclas del teclado en un búfer de edición de texto típico, que se parametriza con el carácter definido por la configuración regional asociado con la tecla utilizada. para llamarlo.
Por ejemplo, presionar la ftecla en un búfer que acepta entrada de texto evalúa el código , que inserta una copia del carácter constante en el punto . En este caso, está determinado por lo que Emacs llama el argumento universal : todo 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 producir otros comportamientos. Estos argumentos pueden proporcionarse mediante prefijos de comando, como + o, de manera 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 dicho prefijo. Dichos argumentos también pueden ser no positivos cuando tiene sentido que lo sean: corresponde a la función que acepta el argumento determinar, de acuerdo con su propia semántica, qué significa para ella un número determinado. Un uso común es que las funciones realicen acciones a la inversa simplemente verificando el signo del argumento universal, como un comando de clasificación que ordena en anverso de forma predeterminada y a la inversa cuando se llama con un argumento negativo, usando el valor absoluto de su argumento como la clave de clasificación (por ejemplo, ordenar a la inversa por índice de columna (o delimitador) 7), o deshacer/rehacer, que son simplemente negativos entre sí (atravesando hacia adelante y hacia atrás a través de un historial recursivo de diferencias en una cierta cantidad de pasos a la vez) .(self-insert-command 1 ?f)
?f
1
Controlu 7 fMeta7 f(self-insert-command 7 ?f)
1
-7
Debido a su vocabulario relativamente amplio de comandos, Emacs presenta un lenguaje de comandos establecido desde hace mucho tiempo , para expresar de manera concisa las pulsaciones de teclas necesarias para realizar una acción. Este lenguaje de comandos reconoce las siguientes teclas mayúsculas y modificadoras: , , , , y . Es posible que no todos estén presentes en un teclado estilo IBM, aunque generalmente se pueden configurar como se desee. Estos se representan en el lenguaje de comandos como los prefijos respectivos: , , , , y . Las claves cuyos nombres sólo se pueden imprimir con más de un carácter están entre corchetes angulares. Por lo tanto, un método abreviado de teclado como + + + (verificar fórmulas dependientes y calcular todas las celdas en todos los libros abiertos en Excel ) se representaría en el lenguaje de comandos de Emacs como , mientras que un comando de Emacs como + + + (búsqueda incremental de archivos mediante coincidencia de nombres regexp ), se expresaría como . El lenguaje de comandos también se utiliza para expresar las acciones necesarias para invocar comandos sin atajos asignados: por ejemplo, el comando (que inicializa un búfer en la memoria para el almacenamiento y manipulación temporal de texto), cuando lo invoca el usuario, se informará como , con Emacs escaneando el espacio de nombres de los comandos disponibles contextualmente para devolver la secuencia más corta de pulsaciones de teclas que lo lexican de forma única.CtrlAlt⇧ ShiftMetaSuperHyperC-
A-
S-
M-
s-
H-
CtrlAlt⇧ ShiftF9C-A-S-<f9>
Metas f CtrlMetasM-s f C-M-s
scratch-buffer
M-x scra <return>
Debido a que Emacs es anterior a la terminología estándar moderna para interfaces gráficas de usuario , utiliza nombres algo divergentes para elementos de interfaz familiares. Los buffers, los datos con los que interactúan los usuarios de Emacs, se muestran al usuario dentro de las ventanas , que son partes en mosaico de la pantalla del terminal o la ventana GUI, a las que Emacs se refiere como marcos ; en terminología moderna, un marco de Emacs sería una ventana y una ventana de Emacs sería una división. Dependiendo de la configuración, las ventanas pueden incluir sus propias barras de desplazamiento, números de línea, a veces una "línea de encabezado" generalmente para facilitar la navegación y una línea de modo en la parte inferior (que generalmente muestra el nombre del búfer, los modos activos y la posición del punto del búfer, entre otros). ). La parte inferior de cada cuadro se utiliza para mensajes de salida (entonces llamados 'área de eco') y entrada de texto para comandos (entonces llamados 'minibúfer').
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 con ventanas y se pueden abrir varias ventanas en el mismo búfer, por ejemplo, para rastrear diferentes partes de un texto largo, una al lado de la otra, sin desplazarse hacia adelante y hacia atrás, y varios búferes pueden compartir el mismo texto, por ejemplo para aprovechar diferentes modos principales en un archivo de lenguaje mixto. De manera similar, las instancias de Emacs no están asociadas con marcos particulares, y se pueden abrir múltiples marcos mostrando un único proceso de Emacs en ejecución, por ejemplo, un marco por pantalla en una configuración de múltiples monitores, o un marco de terminal conectado vía ssh desde un sistema remoto y una interfaz gráfica. marco que muestra el mismo proceso de Emacs a través del monitor del sistema local.
Así como los buffers no requieren Windows, la ejecución de procesos de Emacs no requiere ningún marco, y un patrón de uso común es implementar Emacs como un servidor de edición : ejecutarlo como un demonio sin cabeza y conectarse a él a través de un cliente que genera marcos. Este servidor puede estar disponible en cualquier situación en la que se requiera un editor, simplemente declarando que el programa cliente es del usuario o variable. Dicho servidor continúa ejecutándose en segundo plano, administrando cualquier proceso secundario, acumulando stdin de tuberías abiertas, puertos o fifos, realizando acciones periódicas o preprogramadas, recordando el historial de deshacer del búfer, fragmentos de texto guardados, historial de comandos y otros estados del usuario. entre sesiones de edición. En este modo de operación, Emacs superpone la funcionalidad de programas como screen y tmux .EDITOR
VISUAL
Debido a su separación entre los aspectos de visualización y la funcionalidad de edición, Emacs puede visualizar de forma más o menos similar en cualquier dispositivo más complejo que un terminal tonto , incluso proporcionando elementos gráficos WIMP típicos en terminales de texto con suficientes funciones, aunque los marcos gráficos son el modo de visualización preferido, proporcionando una superconjunto estricto de las características de los marcos de terminales de texto.
(set-default-coding-systems 'utf-8)
(global-set-key (kbd "C-x C-b") 'ibuffer)
after-save-hook
)El primer Emacs contenía una biblioteca de ayuda que incluía documentación para cada comando, variable y función interna. Debido a esto, los defensores de Emacs describieron el software como autodocumentado en el sentido de que presenta al usuario información sobre sus características normales y su estado actual. Cada función incluye una cadena de documentación que se muestra al usuario cuando la solicita, una práctica que posteriormente se extendió a lenguajes de programación como Lisp , Java , Perl y Python . Este sistema de ayuda puede llevar a los usuarios al código real de cada función, ya sea de una biblioteca integrada o de una biblioteca agregada de terceros.
Emacs también tiene un tutorial incorporado . Emacs muestra instrucciones para realizar comandos de edición simples e invocar el tutorial cuando se inicia sin ningún archivo para editar. El tutorial es de Stuart Cracraft y Richard Stallman.
La Iglesia de Emacs , formada por Richard Stallman , es una religión parodia creada para los usuarios de Emacs. [50] 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 lo llama anatema del software propietario . ("Usar una versión gratuita de vi no es un pecado sino una penitencia ." [51] ) La Iglesia de Emacs tiene su propio grupo de noticias , alt.religion.emacs , [52] que tiene publicaciones que pretenden apoyar esta religión parodia. Los partidarios de vi han creado un Culto de vi opuesto .
Stallman se ha referido en broma a sí mismo como St I GNU cius , un santo de la Iglesia de Emacs. [53] Esto es en referencia a Ignacio de Antioquía , un padre de la Iglesia primitiva venerado en el cristianismo.
Hay folklore que atribuye una lesión por esfuerzo repetitivo coloquialmente llamada meñique de Emacs a la fuerte dependencia de Emacs de las teclas modificadoras, [54] aunque no se han realizado estudios que demuestren que Emacs causa más problemas de este tipo que otros programas informáticos con mucho teclado.
Los usuarios han abordado este problema mediante varios enfoques. Algunos usuarios recomiendan simplemente usar las dos teclas Control en los teclados típicos de PC, como las teclas Shift, mientras escriben al tacto para evitar forzar demasiado el meñique izquierdo; un uso adecuado del teclado reducirá el RSI. [55] Los métodos del lado del software incluyen: [56]
ergoemacs-mode
). [58]ace-jump-mode
[60] o extensiones de Emacs Lisp que proporcionan una funcionalidad similar de navegación por niveles, primero solicitando un carácter y luego reemplazando las apariciones del carácter con teclas de acceso para el movimiento del cursor.evil-mode
, una capa avanzada de emulación de Vim .god-mode
, que proporciona un enfoque similar al de vim con un modo para ingresar comandos de Emacs sin teclas modificadoras.evil-mode
god-mode
viper-mode
que permite el uso del diseño de teclas vi para edición de texto básica y el esquema de Emacs para funciones más avanzadas. [63]M-x <command-name>
. El propio Mx también puede ser de rebote.Las soluciones de hardware incluyen teclados especiales como el teclado contorneado de Kinesis , que coloca las teclas modificadoras donde pueden ser operadas fácilmente con el pulgar , o el teclado natural de Microsoft , cuyas grandes teclas modificadoras están colocadas simétricamente a ambos lados del teclado y pueden presionarse con la palma de la mano. [54] También se pueden utilizar pedales.
El meñique de Emacs es un desarrollo relativamente reciente. El teclado Space-cadet en el que se desarrolló Emacs tenía teclas de control de gran tamaño adyacentes a la barra espaciadora y fáciles de alcanzar con el pulgar. [sesenta y cinco]
La palabra emacs a veces se pluraliza como emacsen , por analogía fonética con boxen y VAXen , en referencia a diferentes variedades de Emacs. [66]
Para que un editor se llame "emacs" el principal requisito es que sea totalmente extensible con un lenguaje de programación real, no sólo un lenguaje de macros.
GNU Emacs es el más popular y extendido de la familia de editores Emacs.
Finalmente, si te sientes frustrado, intenta describir tus problemas a la famosa psicoterapeuta Eliza. Solo haz Mx doctor.
"EMACS como tal en realidad comenzó como un proyecto de estándares", envía un correo electrónico a Guy Steele
Un novato engreído le dijo una vez a Stallman: "Puedo adivinar por qué el editor se llama Emacs, pero ¿por qué el justificante se llama Bolio?". Stallman respondió enérgicamente: Los nombres no son más que nombres, Emack & Bolio's es el nombre de una popular heladería en la ciudad de Boston. Ninguno de estos hombres tuvo nada que ver con el software. Respondida a su pregunta, aún sin respuesta, el novicio se giró para irse, pero Stallman lo llamó: "Ni Emacs ni Bolio tampoco tuvieron nada que ver con la heladería".
Escribí el segundo Emacs: la implementación de la máquina Lisp, cuya especificación era "hacer lo que hace el Emacs PDP-10 (original) de Stallman", y luego progresé desde allí. Hay MUCHO de eso. A Mike McMahon y a mí nos llevó horas interminables implementar tantos comandos para crear ZWEI/Zmacs.
Computer Corporation of America (CCA)
EMACS, escrito por Steve Zimmerman
En retrospectiva, 24.3 debería haberse denominado 25.1 y 24.4 debería haberse denominado 26.1. La cosa
.N
realmente debería conservarse solo para versiones de corrección de errores y ni 24.3, 24.4 ni la 24.5 planificada anteriormente son versiones de corrección de errores.
veintinueve años de desarrollo continuo por nada menos que 579 personas
Había gente en aquella época, en 1985, que tenía máquinas de un megabyte sin memoria virtual. Querían poder utilizar GNU Emacs. Esto significaba que tenía que mantener el programa lo más pequeño posible.
Las computadoras modernas tienen recursos más que suficientes para iniciar y ejecutar un Emacs completo en una fracción de segundo, y probablemente Emacs sea lo que desea. Zile es un clon de Emacs pequeño, rápido y potente. Es útil para instalaciones que ocupan poco espacio (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.
En la mecanografía táctil, los modificadores vienen en pares, como la tecla ⇧ Shift. 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 letra. El uso de 2 manos evita forzar su músculo con una sola mano.