Emacs / i m æ k s / o EMACS ( Editor MACroS ) [3] [4] [5] es una familia de editores de texto que se caracterizan por su extensibilidad . [6] El manual de la variante más utilizada, [7] GNU Emacs , lo describe como "el editor de visualización en tiempo real, extensible, personalizable, autodocumentado". [8] El desarrollo del primer Emacs comenzó a mediados de la década de 1970, y el trabajo en su descendiente directo, GNU Emacs, continúa activamente a partir de 2021 [actualizar].
Autor (es) original (es) | David A. Moon , Guy L. Steele Jr. |
---|---|
Desarrollador (es) | Varios desarrolladores de software libre / libre , incluidos voluntarios y desarrolladores comerciales. |
Versión inicial | 1976 [1] [2] |
Lanzamiento estable | 27.2 (25 de marzo de 2021 [±] | )
Escrito en | Lisp , C |
Sistema operativo | Multiplataforma |
Tipo | Editor de texto |
Emacs tiene más de 10,000 comandos incorporados y su interfaz de usuario permite al usuario combinar estos comandos en macros para automatizar el trabajo. Las implementaciones de Emacs suelen presentar un dialecto del lenguaje de programación Lisp que proporciona una capacidad de extensión profunda, lo que permite a los usuarios y desarrolladores escribir nuevos comandos y aplicaciones para el editor. Se han escrito extensiones para administrar correo electrónico , archivos , esquemas y feeds RSS , [9] así como clones de ELIZA , Pong , Conway's Life , Snake y Tetris . [10]
El EMACS original fue escrito en 1976 por David A. Moon y Guy L. Steele Jr. como un conjunto de Editor MACroS para el editor de TECO . [2] [3] [4] [5] [11] Se inspiró en las ideas de los editores TECO-macro TECMAC y TMACS. [12]
La versión más popular y más portada de Emacs es GNU Emacs, que fue creada por Richard Stallman para el Proyecto GNU . [13] 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.
Emacs es, junto con vi , uno de los dos principales contendientes en las guerras tradicionales de editores de la cultura Unix . Emacs se encuentra entre los proyectos de código abierto más antiguos que aún se encuentran en desarrollo. [14]
Historia
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 usaba modos separados en los que el usuario agregaba texto, editaba el texto existente o mostraba 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 comandos de TECO diciéndole que cambie al modo de entrada, ingrese los caracteres requeridos, tiempo durante el cual el texto editado no se mostró en la pantalla, y finalmente ingrese un carácter (
Richard Stallman visitó el laboratorio de inteligencia artificial de Stanford en 1972 o 1974 y vio al editor E del laboratorio , escrito por Fred Wright. [16] 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 pirata informático en el Laboratorio de IA, había agregado a TECO un modo combinado de visualización / edición llamado Control-R que permitía que la visualización de la pantalla se actualizara cada vez que el usuario ingresaba 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 TECO que permitió al usuario redefinir cualquier pulsación de tecla para ejecutar un programa TECO. [5]
E tenía otra característica de la que carecía TECO: edición de acceso aleatorio. TECO era un editor secuencial de páginas diseñado para editar cintas de papel en el PDP-1 y, por lo general, permitía editar 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 de páginas en el disco, Stallman modificó TECO para manejar grandes búferes 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 solo búfer. Casi todos los editores modernos utilizan este enfoque.
La nueva versión de TECO rápidamente se hizo popular en el laboratorio de inteligencia artificial y pronto acumuló una gran colección de macros personalizadas cuyos nombres a menudo terminaban en MAC o MACS , que significa macro . Dos años más tarde, Guy Steele asumió el proyecto de unificar las diversas macros en un solo conjunto. [17] La implementación final de Steele y Stallman incluyó facilidades para extender y documentar el nuevo conjunto de macros. [5] El sistema resultante se llamó EMACS, que significa Edición de MACroS o, alternativamente, E con MACroS . Stallman eligió el nombre Emacs "porque
Stallman vio un problema en demasiada personalización y bifurcación de facto y estableció ciertas condiciones de uso. [ cita requerida ] Más tarde escribió: [20]
EMACS se distribuyó sobre la base de un intercambio comunitario, lo que significa que todas las mejoras deben devolverse para que las incorpore y distribuya.
El Emacs original, como TECO, se ejecutó solo en el PDP-10 con ITS. Su comportamiento fue lo suficientemente diferente al de TECO como para que pudiera considerarse 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 en su Laboratorio de Ciencias de la Computación. [21]
Implementaciones
Implementaciones tempranas
En los años siguientes, los programadores escribieron una variedad de editores similares a Emacs para otros sistemas informáticos. Estos incluyeron EINE ( EINE Is Not EMACS ) y ZWEI [22] ( ZWEI Was EINE Initially ), que fueron escritos para la máquina Lisp por Mike McMahon y Daniel Weinreb , y Sine ( Sine Is Not Eine ), [23] 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 Cambridge Information Systems Lab de Honeywell . Más tarde, Multics Emacs fue mantenido por Richard Soley , quien pasó a desarrollar 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. El primer editor similar a Emacs que se ejecutó en Unix , Gosling Emacs fue escrito en C y usó Mocklisp , un lenguaje con sintaxis similar a Lisp, como un idioma de extensión.
Anuncios temprana para Computer Corporation of America 's CCA EMACS (Steve Zimmerman). [24] apareció en 1984. [25] Las comparaciones de 1985 con GNU Emacs, cuando salió, mencionaban gratis frente a 2.400 dólares. [26] [ cita irrelevante ]
GNU Emacs
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 de Stallman de su intérprete Mocklisp por un intérprete Lisp verdadero requirió que casi todo su código fuera reescrito. 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 un 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 se numeraron como 1.xx , con el dígito inicial denotando la versión del núcleo de 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 pasó del 1 al 13 . [27] 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 aumentarían más rápidamente en el futuro. [28]
GNU Emacs fue luego portado a Unix. Ofrecía más funciones que Gosling Emacs, en particular un Lisp con todas las funciones como su 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 juerga de 1986 en la que obtuvo acceso de superusuario a computadoras Unix. [29]
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 Elisp, [30] solo se necesita portar el núcleo C que implementa el intérprete Elisp. Esto hace que la migración de Emacs a una nueva plataforma sea considerablemente menos difícil que la migración de un proyecto equivalente que consta únicamente de código nativo.
El desarrollo de GNU Emacs estuvo relativamente cerrado hasta 1999 y se usó como ejemplo del estilo de desarrollo de la Catedral en La Catedral y el Bazar . Desde entonces, el proyecto ha adoptado una lista de correo de desarrollo público y acceso CVS anónimo . El desarrollo se llevó a cabo en un solo tronco CVS hasta 2008 y luego se cambió al Bazaar DVCS . El 11 de noviembre de 2014, el desarrollo se trasladó a Git . [31]
Richard Stallman se ha mantenido como el principal responsable de mantenimiento de GNU Emacs, pero en ocasiones se ha apartado del puesto. Stefan Monnier y Chong Yidong fueron mantenedores de 2008 a 2015. [32] [33] John Wiegley fue nombrado mantenedor en 2015 después de una reunión con Stallman en MIT. [34] A principios de 2014, GNU Emacs ha tenido 579 confirmadores individuales a lo largo de su historia. [35]
XEmacs
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 primeras bifurcaciones 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 cesaron sus esfuerzos por fusionarlos nuevamente en un solo programa. [36] Lucid Emacs ha pasado 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 beta en 2013), mientras que GNU Emacs ha implementado muchas características anteriormente exclusivas de XEmacs. [37] [se necesita una mejor fuente ]
Otras bifurcaciones de GNU Emacs
Otras bifurcaciones notables incluyen:
- Aquamacs : basado en GNU Emacs (Aquamacs 3.2 está basado en GNU Emacs versión 24 y Aquamacs 3.3 está basado en GNU Emacs versión 25) que se centra en la integración con la interfaz de usuario de Apple Macintosh
- Meadow : una versión japonesa para Microsoft Windows [38]
- SXEmacs : la bifurcación de XEmacs de Steve Youngs [39]
Varios editores de Emacs
En el pasado, proliferaron los proyectos destinados a producir versiones pequeñas de Emacs. GNU Emacs se apuntó inicialmente a computadoras con un espacio de direcciones plano de 32 bits y al menos 1 MiB de RAM. [40] Estas computadoras eran estaciones de trabajo de alta gama y miniordenadores en la década de 1980, y esto dejó una necesidad de reimplementaciones más pequeñas que se ejecutarían en hardware de computadora personal común . Las computadoras de hoy tienen más que suficiente potencia y capacidad 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 usar en hardware menos capaz. [41]
Otros proyectos apuntan a implementar Emacs en un dialecto diferente de Lisp o en un lenguaje de programación completamente diferente. Aunque no todos todavía se mantienen activamente, estos clones incluyen:
- MicroEMACS , que fue escrito originalmente por Dave Conroy y desarrollado por Daniel Lawrence y que existe en muchas variaciones.
- mg , originalmente llamado MicroGNUEmacs y, más tarde, mg2a, una rama de dominio público de MicroEMACS destinada a parecerse más a GNU Emacs. Ahora instalado por defecto en OpenBSD .
- JOVE (la propia versión de Jonathan de Emacs), la implementación de Emacs no programable de Jonathan Payne para sistemas tipo UNIX .
- MINCE (MINCE no es Emacs completo), una versión para CP / M y DOS posteriores, de Mark of the Unicorn . MINCE evolucionó a Final Word, que finalmente se convirtió 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 el procesador de texto predeterminado con las primeras versiones de Kaypro II y Kaypro IV. Más tarde se proporcionó con Kaypro 10 como alternativa a WordStar .
- Freemacs , una versión de DOS que usa un lenguaje de extensión basado en la expansión de macro de texto y se ajusta al límite de memoria plana original de 64 KiB .
- Zile . Zile era un acrónimo recursivo de Z ile I s L ossy E Macs , [42] pero el proyecto fue reescrito en Lua y ahora da la expansión como Editores Zile Implementa Lua. El nuevo Zile todavía incluye una implementación de Emacs en Lua llamada Zemacs. También hay una implementación de vi llamada Zi.
- Zmacs , para MIT Lisp Machine y sus descendientes, implementado en ZetaLisp .
- Climacs , una variante influenciada por Zmacs implementada en Common Lisp .
- Epsilon , [43] un clon de Emacs de Lugaru Software. Las versiones para DOS, Windows, Linux, FreeBSD, Mac OS X y O / S 2 se incluyen en el lanzamiento. Utiliza un lenguaje de extensión que no es Lisp con sintaxis C y utilizó una implementación de búfer de shell de comandos simultánea muy temprana en MS-DOS de tarea única.
- PceEmacs es el editor basado en Emacs para SWI-Prolog .
- Amacs , una versión Apple II ProDOS de Emacs implementada en 6502 por Brian Fox . [44] [45]
- Hemlock , originalmente escrito en Spice Lisp , luego Common Lisp . Una parte de CMU Common Lisp . Influenciado por Zmacs . Posteriormente bifurcado por los proyectos Lucid Common Lisp (como Helix), LispWorks y Clozure CL . También hay un proyecto Portable Hemlock, que tiene como objetivo proporcionar un Hemlock, que se ejecuta en varias implementaciones de Common Lisp.
- umacs , [46] una implementación bajo OS-9
- edwin , un editor de texto similar a Emacs incluido con MIT / GNU Scheme.
Editores con emulación de Emacs
- Joe's Own Editor emula las combinaciones de teclas de Emacs cuando se invoca como jmacs .
- JED tiene un modo de emulación para Emacs.
- Eclipse (IDE) proporciona un conjunto de combinaciones de teclas de Emacs.
- IntelliJ IDEA proporciona un conjunto de combinaciones de teclas de Emacs.
- Epsilon (editor de texto) Por defecto es la emulación de Emacs y soporta un modo vi.
- El sistema de texto Cocoa usa algo de la misma terminología y comprende muchos enlaces de navegación de Emacs. Esto es posible porque la IU nativa usa la tecla Comando (equivalente a Super) en lugar de la tecla Control . [47]
- GNU Readline es un editor de líneas que comprende las combinaciones de teclas de navegación estándar de Emacs. También tiene un modo de emulación vi .
- GNOME Builder tiene un modo de emulación para Emacs.
- MATLAB proporciona combinaciones de teclas de Emacs para su editor. [48]
- Visual Studio Code proporciona una extensión para emular combinaciones de teclas de Emacs.
Características
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 texto 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, después de modificarlo). Esto se hace en editores de línea, como ed (unix), ED (CP / M) y Edlin (MS-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 documento, 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). La capa elisp se sienta encima de un núcleo estable de servicios básicos y la plataforma de abstracción escrito en el lenguaje de programación C . En este entorno Lisp, las variables y funciones se pueden modificar sin necesidad de recompilar o reiniciar Emacs. La mayor parte de la configuración se almacena en variables y se cambia simplemente cambiando los valores de las variables.
La estructura principal de datos de edición de texto se denomina búfer que contiene texto con atributos adicionales; los más importantes son: punto (ubicación del cursor) y marca (otra ubicación, delimitando la región seleccionada junto con el punto ), el nombre del archivo que está visitando (si aplica) y los valores locales de las variables ELisp específicas del búfer. Dichos valores locales especifican en particular el conjunto de modos activos (exactamente un modo principal [ aclaración necesaria ] que normalmente adapta el editor al tipo de contenido del búfer (como ELisp, C, HTML, etc.) y cualquier número de modos menores [ aclaración necesaria ] controlando otros comportamientos del editor independientemente del tipo de contenido). Cualquier interacción con el editor (como presionar una tecla o hacer clic en un botón del mouse) se realiza ejecutando código Elisp, 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 su nombre; algunos comandos evalúan el código Elisp arbitrario de los búferes (por ejemplo, eval-region
o eval-buffer
).
Los búferes se muestran en ventanas , que son partes en mosaico de la pantalla del terminal o la ventana GUI (llamado marco en términos de Emacs; son posibles múltiples marcos). Dependiendo de la configuración, las ventanas incluyen barras de desplazamiento, números de línea, a veces una 'línea de encabezado' típicamente para facilitar la navegación, y una línea de modo en la parte inferior (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 usa para mensajes (luego llamada 'área de eco') y entrada de texto para comandos (luego llamada 'minibúfer').
Se pueden abrir varias ventanas en el mismo búfer, por ejemplo, para ver diferentes partes de un texto extenso, y varios búferes pueden compartir el mismo texto, por ejemplo, para aprovechar los diferentes modos principales en un archivo de idioma mixto. El modo principal también se puede cambiar manualmente según sea necesario con M-x
.
Personalización
- Las pulsaciones de teclas se pueden grabar en macros y reproducir para automatizar tareas complejas y repetitivas. A menudo, esto se hace de forma ad-hoc, y cada macro se descarta después de su uso, aunque las macros se pueden guardar e invocar más tarde.
- Al inicio, Emacs ejecuta un script Emacs Lisp llamado ~ / .emacs (las versiones recientes también buscan ~ / emacs.el , ~ / .emacs.d / init.el y ~ / .config / emacs / init.el ; [49] Emacs ejecutará el primero que encuentre, ignorando el resto). Este archivo de personalización personal puede ser arbitrariamente largo y complejo, pero el contenido típico incluye:
- Establecer variables globales o invocar funciones para personalizar el comportamiento de Emacs, por ejemplo
(set-default-coding-systems 'utf-8)
- Combinaciones de teclas para anular las estándar y para agregar accesos directos a los comandos que el usuario encuentra convenientes pero que no tienen una combinación de teclas por defecto. Ejemplo:
(global-set-key (kbd "C-x C-b") 'ibuffer)
- Cargando, habilitando e inicializando extensiones (Emacs viene con muchas extensiones, pero solo unas pocas se cargan por defecto).
- Configurar enlaces 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)
- Establecer variables globales o invocar funciones para personalizar el comportamiento de Emacs, por ejemplo
- La extensión de personalización permite al usuario establecer propiedades de configuración como el esquema de color de forma interactiva, desde dentro de Emacs, de una manera más fácil de usar que estableciendo variables en .emacs : ofrece búsqueda, descripciones y texto de ayuda, entradas de opción múltiple, retorno a los valores predeterminados, modificación de la instancia de Emacs en ejecución sin recargar y otras comodidades similares a la funcionalidad de preferencias de otros programas. Los valores personalizados se guardan en .emacs (u otro archivo designado) automáticamente.
- Los temas , que afectan la elección de fuentes y colores, se definen como archivos elisp y se eligen a través de la extensión de personalización.
Autodocumentado
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 a pedido, 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 para cada función, ya sea de una biblioteca incorporada o de una biblioteca de terceros agregada.
Emacs también tiene un tutorial incorporado . Emacs muestra instrucciones para ejecutar 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.
Cultura
Iglesia de Emacs
La Iglesia de Emacs , formada por Richard Stallman , es una religión de 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 un anatema de 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 San I GNU cius , un santo en la Iglesia de Emacs. [53]
Meñique de emacs
Existe el folclore que atribuye una lesión por tensión repetitiva llamada coloquialmente Emacs pinky a la fuerte dependencia de Emacs de las teclas modificadoras, [54] aunque no se han realizado estudios para demostrar que Emacs causa más problemas de este tipo que otros programas informáticos con teclados pesados.
Los usuarios han abordado esto a través de varios enfoques. Algunos usuarios recomiendan simplemente usar las dos teclas de control en los teclados de PC típicos, como las teclas Mayús, mientras escriben 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]
- Personalizar el diseño de la clave para que la Ctrlclave se transponga con la clave. [57] Técnicas similares incluyen definir la clave como una clave de control adicional o transponer las teclas de control y meta. Sin embargo, como estas teclas aún se presionan con el mismo dedo, aún pueden contribuir al meñique de Emacs. [ aclaración necesaria ]⇪ Caps Lock⇪ Caps Lock
- Software, como xwrits o el integrado type-break-mode en Emacs, que recuerda al usuario que debe tomar descansos programados regularmente.
- Usando las combinaciones de teclas ErgoEmacs (con modo menor
ergoemacs-mode
). [58] - Personalización de toda la distribución del teclado para mover las teclas de Emacs con frecuencia estadística a lugares más apropiados. [59]
- Paquetes como
ace-jump-mode
[60] o extensiones elisp que brindan una funcionalidad similar de navegación por niveles, primero solicitando un carácter y luego reemplazando las ocurrencias del carácter con teclas de acceso para el movimiento del cursor. evil-mode
, una capa de emulación de Vim avanzada .god-mode
, que proporciona un enfoque similar al de vim con un modo para ingresar comandos de Emacs sin teclas modificadoras.- Utilizando el diseño de teclas personalizado ofrecido por Spacemacs , un proyecto en el que la space bartecla se utiliza como la tecla principal para iniciar secuencias de control. El proyecto también incorpora en gran medida tanto
evil-mode
ygod-mode
. [61] - StickyKeys , que convierte secuencias de teclas en combinaciones de teclas. [62]
- Incorporado de Emacs
viper-mode
que permite el uso de la disposición de teclas vi para la edición básica de texto y el esquema de Emacs para funciones más avanzadas. [63] - Otorgar un papel doble a una tecla de acceso más cómodo, como la barra espaciadora, para que funcione como una tecla de control cuando se presiona en combinación con otras teclas. Los teclados ergonómicos o teclados con un mayor número de teclas adyacentes a la barra espaciadora, como los teclados japoneses , también permiten el control con el pulgar de otras teclas modificadoras como Meta o Shift. [64]
- Usar un subconjunto ergonómico limitado de combinaciones de teclas y acceder a otras funciones escribiendo
M-x
. El propio Mx también se puede rebotar. - Manejo de Emacs a través de la entrada de voz.
Las soluciones de hardware incluyen teclados especiales como el teclado contorneado de Kinesis , que coloca las teclas modificadoras donde se pueden operar fácilmente con el pulgar , o el teclado Microsoft Natural , cuyas teclas modificadoras grandes se colocan simétricamente a ambos lados del teclado y se pueden presionar 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 que estaban adyacentes a la barra espaciadora y eran fáciles de alcanzar con el pulgar. [sesenta y cinco]
Terminología
La palabra emacs es a veces en plural como emacsen , por analogía fonética con bafles y VAXen , en referencia a las diferentes variedades de Emacs. [66]
Ver también
- Comparación de editores de texto
- Conkeror
- GNU TeXmacs
- Lista de editores de texto
- Lista de comandos de Unix
- Entorno de desarrollo integrado
Referencias
- ^ "Fechas de lanzamiento de Emacs" .
- ^ a b Zawinski, Jamie (21 de junio de 2005) [1999]. "Línea de tiempo de Emacs" . Consultado el 11 de agosto de 2015 .
- ^ a b Greenberg, Bernard S. (1979). Multics Emacs: Historia, Diseño e Implementación .
- ^ a b c "Preguntas frecuentes sobre GNU Emacs" .
- ^ a b c d Adrienne G. Thompson. "MACSimizing TECO" .
- ^ "Introducción al tutorial de GNU Emacs" .
Para que un editor se llame "emacs", el requisito principal es que sea completamente extensible con un lenguaje de programación real, no solo un lenguaje de macros.
- ^ "Referencia de bolsillo de GNU Emacs" .
GNU Emacs es el más popular y extendido de la familia de editores de Emacs.
- ^ "Manual de GNU Emacs" . FSF . Consultado el 24 de noviembre de 2012 .
- ^ "Presentación de Elfeed, un lector de feeds web de Emacs" .
- ^ "Diversiones" .
Finalmente, si se siente frustrado, intente describir sus problemas a la famosa psicoterapeuta Eliza. Solo hazlo doctor Mx.
- ^ A Richard Stallman se le atribuye a menudo como otro co-creador, pero comoescribió Daniel Weinreb , "El Emacs original (basado en TECO) fue creado y diseñado por Guy L. Steele Jr. y David Moon. se había establecido como el editor de texto estándar en el laboratorio de IA, Stallman se hizo cargo de su mantenimiento ". El propio Moon respondió: "Todo es cierto, por lo que puedo recordar. Pero, para ser justos, debo decir que Stallman mejoró enormemente a Emacs después de" liberarlo "de Guy y de mí". Ver Weinreb, Dan (11 de noviembre de 2007), "Refutación a la historia de Stallman sobre la formación de lo simbólico y LMI" , blog de Dan Weinreb: software e innovación , archivado desde el original el 1 de enero de 2009.
- ^ "Una historia de Emacs" . Manual interno de XEmacs . 2006-12-11 . Consultado el 22 de agosto de 2007 .
- ^ Allombert, Bill. "Concurso de popularidad de Debian" . Informe de los editores . Debian . Consultado el 22 de noviembre de 2011 .
- ^ "Los 10 programas de código abierto más antiguos y significativos" .
- ^ Raymond, Eric S .; Cameron, Debra; Rosenblatt, Bill (1996). Aprendiendo GNU Emacs, 2da edición . Sebastopol, CA: O'Reilly. págs. 408–409. ISBN 1-56592-152-6.
- ^ Arthur Samuel (marzo de 1980). "Essential E" (PDF) . Consultado el 19 de abril de 2020 .
- ^ "EMACS vs. vi: La interminable geek 'guerra santa ' " . Archivado desde el original el 26 de noviembre de 2014 . Consultado el 30 de mayo de 2014 .
"EMACS como tal en realidad comenzó como un proyecto de estándares", envía un correo electrónico a Guy Steele.
- ^ Stallman, Richard M. (1987). "El editor de pantalla completa de EMACS" . GARB ( mayo de 1987). Lysator, Universidad de Linköping. págs. 8-11 . Consultado el 14 de septiembre de 2007 .
- ^ Reynolds, Craig (10 de febrero de 1992). Wiseman, David G. (ed.). "El nombre de Emac Bolio Koan" . David G. Wiseman: Historias del folclore informático .
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ó 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 su pregunta, aún sin respuesta, el novicio se volvió para irse, pero Stallman lo llamó, 'Ni Emacs ni Bolio tenían nada que ver con la heladería tampoco'.
[ enlace muerto permanente ] - ^ a b Stallman, Richard (26 de marzo de 1981). EMACS: el editor de visualización extensible, personalizable y autodocumentado (PDF) (informe técnico). Laboratorio de IA del MIT. AI Memo 519a . Consultado el 7 de enero de 2011 .
- ^ Leigh Klotz (29 de agosto de 2007). "correo electrónico citado en" Tenga cuidado con lo que bromea " " . The New York Times . Consultado el 1 de mayo de 2010 .
- ^ "Comentario del autor de ZWEI, Dan Weinreb" .
Escribí el segundo Emacs de la historia: la implementación de la máquina Lisp, cuya especificación era "hacer lo que hace Emacs PDP-10 (original) de Stallman", y luego progresé desde allí. Hay mucho de eso. Mike McMahon y yo nos llevó horas interminables implementar tantos comandos para hacer ZWEI / Zmacs.
- ^ Owen Theodore Anderson (enero de 1979). "El diseño e implementación de un sistema de escritura de editor orientado a la pantalla" (PDF) . Consultado el 9 de septiembre de 2012 .
- ^ Christopher Kelty; Mario Biagioli; Peter Jaszi; Martha Woodmansee (2015). Hacer y deshacer la propiedad intelectual .
Computer Corporation of America (CCA) EMACS, escrito por Steve Zimmerman
- ^ "Emacs" . 17 de diciembre de 2017.
- ^ "Diferencias entre GNU Emacs y CCA Emacs. Copyyright" .
- ^ "Una historia de Emacs" .
- ^ "emacs-devel msg 00872 (29/09/2014)" .
En retrospectiva, 24.3 debería haber sido nombrado 25.1 y 24.4 debería haber sido nombrado 26.1. La cosa .N realmente debería conservarse solo para las versiones de corrección de errores y ni 24.3, 24.4, ni la 24.5 previamente planificada son versiones de corrección de errores.
- ^ Stoll, Clifford (1988). "Acechando al hacker astuto". Comunicaciones de la ACM . 31 (5): 484–497. doi : 10.1145 / 42411.42412 . S2CID 6956966 .
- ^ "GNU Emacs" . Abrir Hub . Consultado el 25 de noviembre de 2017 .
- ^ Raymond, Eric (12 de noviembre de 2014). "El nuevo repositorio de Git está activo" . Consultado el 25 de noviembre de 2017 .
- ^ 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 .
- ^ McNamara, Paul (25 de febrero de 2008). "Stallman sobre la entrega de GNU Emacs, su futuro y la importancia de la nomenclatura" . Mundo de la red . Consultado el 25 de noviembre de 2017 .
- ^ Chirgwin, Richard (5 de noviembre de 2015). "Emacs obtiene un nuevo responsable cuando Richard Stallman se despide" . El registro . Consultado el 25 de noviembre de 2017 .
- ^ Raymond, Eric (29 de marzo de 2014). "Más feo ... repositorio ... conversión ... jamás" . Consultado el 25 de noviembre de 2017 .
veintinueve años de desarrollo continuo por no menos de 579 personas
- ^ Stephen J., Turnbull. "XEmacs vs. GNU Emacs" . Consultado el 2 de octubre de 2012 .
- ^ "XEmacs ha muerto. ¡Viva XEmacs!" .
- ↑ FrontPage - Meadow Wiki Archivado el 16 de febrero de 2012 en la Wayback Machine.
- ^ "Sitio web de SXEmacs" . Sxemacs.org. 2009-10-11 . Consultado el 8 de noviembre de 2009 .
- ^ "Mis experiencias Lisp y el desarrollo de GNU Emacs" .
Había personas en esos días, en 1985, que tenían 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.
- ^ "GNU Zile (Zile es Lossy Emacs) - Resumen" .
Las computadoras modernas tienen recursos más que suficientes para iniciar y ejecutar un Emacs completo en una fracción de segundo, y Emacs es probablemente lo que desea. Zile es un clon de Emacs pequeño, rápido y poderoso. Es útil para instalaciones pequeñas (por ejemplo, en disquetes), máquinas con poca memoria o sesiones de edición rápida, especialmente en máquinas remotas o como un usuario diferente, por ejemplo, root.
- ^ "Página de inicio de Zile" .
- ^ "Página de inicio del software Lugaru" .
- ^ "Fuente AMACS" .
- ^ "apple2.org" .
- ^ Paul S. Dayan (1992). The OS-9 Guru - 1: Los hechos . Galáctica Industrial Limited. ISBN 0-9519228-0-7.
- ^ "Sistema de texto Cocoa" .
- ^ "Configuración de combinaciones de teclas para la ventana de comandos y el editor" . Blogs de Mathworks . 2007-05-11 . Consultado el 18 de agosto de 2019 .
- ^ "Archivo de inicialización" .
- ^ "San IGNUcio - Richard Stallman" . Consultado el 29 de enero de 2015 .
- ^ "La transcripción selectiva íntegra de la charla de Richard M Stallman en la ANU" . Consultado el 29 de enero de 2015 .
- ^ alt.religion.emacs grupo de noticias
- ^ "San IGNUcio - Richard Stallman" . www.stallman.org . Consultado el 27 de marzo de 2018 .
- ^ a b "Cómo evitar el problema Pinky de Emacs" . Xahlee.org . Consultado el 8 de noviembre de 2009 .
- ^ "Emacs: Por qué no debería cambiar las teclas {Bloq Mayús, Control}" .
En la escritura 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 que una sola mano tense los músculos.
- ^ "EmacsWiki: lesión por esfuerzo repetido" . Consultado el 29 de enero de 2015 .
- ^ "Mover la tecla Ctrl" . EmacsWiki . Consultado el 8 de noviembre de 2009 .
- ^ "Página de inicio de ErgoEmacs" . Consultado el 1 de septiembre de 2018 .
- ^ "Diseño de Keymacs" .
- ^ "EmacsWiki: Ace Jump" . Consultado el 29 de enero de 2015 .
- ^ "Spacemacs" . Consultado el 20 de abril de 2015 .
- ^ BayleShanks (7 de octubre de 2009). "Modificadores pegajosos" . EmacsWiki . Consultado el 8 de noviembre de 2009 .
- ^ "Modo Viper" . EmacsWiki . Consultado el 8 de noviembre de 2009 .
- ^ "Modificador en casa de Evdev" . Consultado el 14 de abril de 2015 .
- ^ "Por qué los atajos de teclado de Emacs son dolorosos" .
- ^ "VAXen" . Catb.org . Consultado el 8 de noviembre de 2009 .
Bibliografía
- Ciccarelli, Eugene (1978). Una introducción al editor de Emacs . Cambridge, Massachusetts: Laboratorio de Inteligencia Artificial del MIT. AIM-447. PDF
- Stallman, Richard M. (1981) [1979]. EMACS: el editor de visualización extensible, personalizable y autodocumentado . Cambridge Massachusetts: Laboratorio de Inteligencia Artificial del MIT. AIM-519A. PDF HTML
- Stallman, Richard M. (2002). Manual GNU Emacs (15ª ed.). Prensa GNU. ISBN 1-882114-85-X.
- Stallman, Richard M. (2002). "Mis experiencias Lisp y el desarrollo de GNU Emacs" . Consultado el 1 de febrero de 2007 .
- Chassel, Robert J. (2004). Introducción a la programación en Emacs Lisp . Prensa GNU. ISBN 1-882114-56-6.
- Glickstein, Bob (abril de 1997). Escribiendo extensiones GNU Emacs . O'Reilly y asociados. 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 y asociados. ISBN 0-596-00648-9.
- Finseth, Craig A. (1991). El oficio de la edición de texto -o- Emacs para el mundo moderno . Springer-Verlag & Co. ISBN 978-1-4116-8297-9.
- Thompson, Adrienne G. (2009). "MACSimizing TECO" . Consultado el 26 de febrero de 2012 .
enlaces externos
- Página web oficial
- Entrada revisada en el Directorio de software libre .
- Wikemacs
- EmacsWiki
- EmacsFamily
- Lista de implementaciones de Emacs
- Resumen arquitectónico
- Una de las rivalidades más antiguas en informática: Emacs vs Vi