GNU Emacs
GNU Emacs es un editor de texto extensible, personalizable y autodocumentado.[1] Fue desarrollado por Richard Stallman y la Free Software Foundation como parte del proyecto GNU. Es software libre y se distribuye bajo la licencia GPL. Permanece en desarrollo gracias a una activa comunidad de usuarios y programadores.
GNU Emacs | ||
---|---|---|
Parte de Emacs y plataforma | ||
GNU Emacs 27 | ||
Información general | ||
Tipo de programa | Editor de texto | |
Autor | Richard Stallman | |
Desarrollador | Richard Stallman y FSF | |
Modelo de desarrollo | Software libre | |
Lanzamiento inicial | 20 de marzo de 1985 | |
Licencia | GPL v3 or later | |
Estado actual | Activo | |
Idiomas | Multilingüe | |
Información técnica | ||
Programado en | C, Emacs Lisp | |
Plataformas admitidas | Multiplataforma | |
Interfaz gráfica predeterminada | ||
Método de actualización | ELPA (Emacs Lisp Package Archive) | |
Versiones | ||
Última versión estable | 29.4 (info) ( 22 de junio de 2024 (5 meses y 5 días)) | |
Asistencia técnica | ||
Comunitaria | ||
Enlaces | ||
El núcleo de GNU Emacs está escrito en lenguaje de programación C, que se encarga de las tareas a bajo nivel, como la interacción con el sistema operativo, la gestión de memoria y otros aspectos fundamentales para su funcionamiento. Por otro lado, Emacs Lisp se utiliza para dotarlo de extensibilidad y capacidad de personalización. Esta estructura, permite que las funciones, el comportamiento y forma de interactuar con el usuario en GNU Emacs puedan ser modificados en tiempo real. Además, posibilita la escritura de una amplia gama de paquetes o funcionalidades que cubren diversas necesidades relacionadas con el texto, desde soportar múltiples lenguajes de programación, hasta el soporte de infraestructura de desarrollo colaborativa y tareas como revisión de correo electrónico, chat, navegación por Internet, juegos, reproducción de audio, entre otras.
A lo largo de los años, han sido publicadas distintas versiones de Emacs, pero solo dos han gozado de popularidad y difusión: GNU Emacs y XEmacs, una bifurcación de GNU Emacs. A día de hoy, la más utilizada es GNU Emacs.
Historia
editarEmacs nació en los laboratorios del MIT durante los años 70. Antes de su introducción, el editor de textos predeterminado en el Sistema Incompatible de Tiempo Compartido (ITS), el sistema operativo en los laboratorios de inteligencia artificial PDP-6 y PDP-10, era un editor de líneas conocido como TECO. A diferencia de los editores de texto modernos, en TECO la introducción de texto, la edición y la vista del mismo se hacía de manera separada, como Vi lo haría luego. Los caracteres tecleados no aparecían dentro del documento, había que introducir una serie de instrucciones, en el lenguaje de TECO, indicándole que debía colocar los caracteres requeridos. El texto no se mostraba en la pantalla. Este comportamiento es similar al del programa ed, que todavía se utiliza hoy en día.
Richard Stallman visitó el Laboratorio de Inteligencia Artificial de Stanford en 1972 o 1974 y conoció al editor de textos "E". Escrito por Fred Wright, el editor tenía un comportamiento intuitivo WYSIWYG (lo que ves es lo que obtienes) como es común en los editores de textos modernos. Impresionado por esta característica, Stallman volvió al MIT donde Carl Mikkelsen, uno de los hackers en el Laboratorio de Inteligencia Artificial, había agregado un modo de edición-muestreo llamado "Control-R" a TECO, que le permitía a la pantalla mostrar lo que el usuario ingresaba desde el teclado. Stallman reimplementó este modo para que corriera eficientemente. Agregó una característica al modo edición-muestreo de TECO, para que el usuario pueda redefinir cualquier atajo de teclado para ejecutar un programa TECO.
Otra característica de E, que no tenía TECO, era corregir el acceso aleatorio. Desde la implementación, el TECO original fue un editor secuencial, diseñado para editar cinta de papel perforada en el PDP-1. La edición típica podía ser llevada a cabo en una página a la vez, en el orden que las páginas aparecen en el archivo.
La nueva versión de TECO fue popular en el Laboratorio de IA, y pronto acumuló una colección de macros, cuyos nombres terminaban en "MAC" o "MACS". Dos años después, Guy Steele unificó una diversidad de macros de teclado en uno solo.
Después de una noche de hacking conjunto por Steele y Stallman, este acabó la implementación, que incluía utilidades para extender y documentar el nuevo conjunto de macros. El sistema resultante fue llamado EMACS, es decir, "Editing MACroS". Una versión alternativa sostiene que EMACS quería decir "E con MACroS", refiriéndose a la falta de capacidades de macros en E. Según Stallman, él tomó el nombre Emacs "porque <E> no estaba en uso como abreviatura en el ITS en aquel momento". Se ha comentado también que "Emack & Bolio's" era el nombre de una heladería popular en Boston, a poca distancia del MIT. Un programa de formateo de texto usado en ITS fue llamado más tarde BOLIO por Dave Moon, que frecuentaba la heladería. No obstante, a Stallman no le gustaba ese helado, y ni siquiera lo conocía cuando eligió el nombre "Emacs"; esta ignorancia es la base de un Hacker koan, Emacs and Bolio).
Stallman se dio cuenta del peligro que entrañaba demasiadas personalizaciones del programa y las bifurcaciones de facto que podría llegar a suponer, y estableció ciertas condiciones para el uso del programa. Más tarde escribió:
"EMACS fue distribuido sobre la base de compartición comunitaria, lo cual quiere decir que todas las mejoras deben serme enviadas a mí para que sean incorporadas y distribuidas."
El Emacs original, como el TECO, se ejecutaba únicamente en la familia de ordenadores PDP. Su comportamiento era suficientemente distinto de TECO como para ser considerado un editor de texto por derecho propio. Rápidamente se convirtió en el programa estándar de edición en ITS. También fue portado de ITS al Tenex y a sistemas operativos TOPS-20 por Michael McMahon, pero no a Unix inicialmente. Otros colaboradores en versiones tempranas de Emacs fueron Kent Pitman, Earl Killian y Eugene Ciccarelli.
Otros emacsen
editarDurante los siguientes años, se escribieron muchos editores similares a Emacs para otros sistemas operativos. Entre ellos SINE (Sine Is Not EMACS), EINE ("Eine Is Not EMACS") y ZWEI ("ZWEI Was EINE Initially", para la máquina Lisp), que fueron escritos por Michael McMahon y Daniel Weinreb (Los nombres EINE y ZWEI significan respectivamente "uno" y "dos" en alemán). En 1978, Bernard Greenberg escribió Multics Emacs en el Cambridge Information Systems Lab de Honeywell.
El primer editor similar a Emacs que funcionó sobre Unix fue el Gosling Emacs, escrito en 1981 por James Gosling (que más tarde inventó el lenguaje de programación Java). Fue escrito en el lenguaje de programación C y utilizaba un lenguaje de extensión conocido como Mocklisp, con sintaxis similar a la del lenguaje Lisp. En 1984 era software propietario.
GNU Emacs
editarEn 1984, Stallman empezó a trabajar en GNU Emacs para producir una alternativa de software libre al Gosling Emacs. Inicialmente se basó en el Gosling Emacs, pero Stallman reemplazó el intérprete de Mocklisp con un intérprete de Lisp, lo que le obligó a sustituir casi todo el código. GNU Emacs se convirtió en el primer programa publicado por el emergente Proyecto GNU.
GNU Emacs está escrito en Emacs Lisp (a su vez implementado en C) como lenguaje de extensión. La primera versión ampliamente distribuida de GNU Emacs fue la 15.34, que apareció en 1985. Las versiones de la 2 a la 12 no existieron nunca. Las primeras versiones habían sido numeradas con la forma "1.x.x", pero antes de la versión 1.12 se decidió quitar el "1" inicial, ya que se pensaba que este número nunca cambiaría. La versión 13, la primera que fue pública, se liberó el 20 de marzo de 1985.
GNU Emacs se ejecutaba en Unix, al igual que Gosling Emacs. No obstante, GNU Emacs tenía más funciones, como por ejemplo, el Lisp (completo) como lenguaje de extensión. Como resultado, pronto reemplazó a Gosling Emacs como editor Emacs de facto sobre Unix.
Hasta 1999, el desarrollo de GNU Emacs fue relativamente cerrado, hasta el punto en que fue utilizado como ejemplo del modelo de desarrollo de "catedral" en La catedral y el bazar. El proyecto ha adoptado desde entonces una lista de correo pública de desarrollo, y acceso anónimo al sistema CVS. El desarrollo tiene lugar en una única rama de CVS, que está actualmente en la versión 23.4.1.
XEmacs
editarA partir de 1991, Jamie Zawinski y otros desarrollaron Lucid Emacs en Lucid Inc., basándose en una versión alfa de GNU Emacs 19. Las dos bases de código divergieron pronto, y los dos equipos de desarrollo desistieron[2] de intentar combinarlas de nuevo en un solo programa. Este fue uno de los más famosos forks de un programa de software libre. Lucid Emacs ha sido renombrado como XEmacs. Este y GNU Emacs son las dos variedades actuales en uso más populares. La "X" en XEmacs se deriva, bien de un enfoque inicial para soportar el sistema X Window como interfaz gráfica de usuario, o bien un "nombre de compromiso" entre las partes que desarrollaban XEmacs.[3] Tanto GNU Emacs como XEmacs soportan interfaces gráficas y terminales de texto.
Otras implementaciones
editarGNU Emacs fue inicialmente pensado para computadores con un espacio de direcciones de 32-bit, y al menos 1 MiB de RAM, en una época en la cual esos computadores eran considerados de alta calidad. Esto dejó una puerta abierta para pequeñas reimplementaciones. Algunas destacables se nombran a continuación:
- MicroEMACS, una implementación muy portable originalmente escrita por Dave Conroy y Daniel Lawrence siguió desarrollándola. Este editor es usado por Linus Torvalds.[4]
- MG, originalmente denominado MicroGNUEmacs, un offshoot de MicroEMACS que intenta asemejarse más a GNU Emacs. Ahora viene instalado por defecto en OpenBSD.
- JOVE (Jonathan's Own Version of Emacs), una implementación no-programable de Emacs para sistemas UNIX-like por Jonathan Payne.
- Freemacs, una versión DOS con un lenguaje de extensión basado en text macro expansion, todo dentro del límite de memoria original de 64 KiB.
- Meadow[5] es una variante de Emacs originada en Japón diseñada para operar en Windows. Meadow se focaliza en proveer soporte multi-lenguaje.
Licencia
editarPara GNU Emacs (y en general para los paquetes de software GNU), la política sigue consistiendo en aceptar contribuciones significativas de código solamente si el titular del copyright renuncia adecuadamente a sus derechos de copia. No obstante, se hizo una excepción a esta política para el código de MULE (MULtilingual Extension, extensión multilingüe que maneja Unicode y métodos más avanzados de tratar con otros lenguajes), ya que el titular del copyright es el gobierno japonés y la transferencia de copyright no era posible.[6]
Esta política, sin embargo, no se aplica a contribuciones de código extremadamente pequeñas o corrección de fallos. No hay una definición estricta de contribución pequeña, pero a modo de orientación, se considera que sería menos de 10 líneas de código.
Esta política está pensada para facilitar el refuerzo del copyleft, de manera que la FSF pueda defender el software en un juicio, si este se produjera.
Características
editarEl resto de este artículo trata sobre las versiones modernas de Emacs, es decir, GNU Emacs y XEmacs, las únicas encarnaciones de Emacs que son ampliamente usadas hoy en día. El término "Emacs" se usará para referirse a ambos programas, ya que tienen características muy similares; XEmacs comenzó como un fork de GNU Emacs y sus versiones siguientes se han mantenido más o menos compatibles con GNU Emacs.
A pesar de (o quizás a causa de) su venerable pasado, Emacs es uno de los editores de texto más potentes y versátiles hoy en día. Debe remarcarse que es principalmente un editor de texto, y no un procesador de texto; su enorme conjunto de características está orientado a ayudar el usuario a manipular trozos de texto, más que manipular el tipo de letra de los caracteres o imprimir documentos (aunque Emacs puede también hacer eso). Emacs tiene una gran cantidad de características que permiten lidiar con la aparentemente sencilla tarea de editar texto, que van desde comandos para manipular palabras y párrafos (borrarlos, moverlos, moverse por entre ellos, etc.), hasta resaltado de sintaxis para hacer el código fuente más fácil de leer, o ejecutar "macros de teclado" que contienen lotes de comandos de edición definidos por el usuario.
La rica variedad de características que se encuentran en Emacs es el resultado de su diseño poco habitual. Casi toda la funcionalidad del editor, desde las operaciones básicas de edición (como la inserción de caracteres en un documento) hasta la configuración de la interfaz de usuario, es controlada por un dialecto del lenguaje de programación Lisp. En este entorno Lisp, variables e incluso funciones enteras pueden ser modificadas al vuelo, sin tener que recompilar o ni siquiera reiniciar el editor. Como resultado, el comportamiento de Emacs puede ser modificado casi sin límite, bien directamente por el usuario, o (más habitualmente) cargando fragmentos de código Emacs Lisp. Estos fragmentos son conocidos como "bibliotecas", "librerías", "paquetes" o "extensiones".
Emacs contiene un gran número de bibliotecas escritas en Emacs Lisp, y en Internet se pueden encontrar más bibliotecas de terceras partes. Muchas bibliotecas implementan ayudas para la programación de ordenadores, lo que es un reflejo de la popularidad de Emacs entre los programadores. Emacs se puede usar como un entorno de desarrollo integrado (IDE), que permite a los programadores editar, compilar y depurar su código con una única interfaz. Otras bibliotecas realizan funciones menos habituales. A continuación se enumeran varios ejemplos:
- Calc, una potente calculadora numérica.
- Calendar-mode, para guardar calendarios y diarios de citas.
- Doctor, una implementación de ELIZA que realiza psicoterapia rogeriana.
- Dunnet, una aventura conversacional.
- Ediff, para trabajar con ficheros diff de forma interactiva.
- Emerge, para comparar ficheros y combinarlos.
- Emacs/W3, un navegador web.
- Dired, potente y extensible administrador de archivos, de interfaz parecida a Midnight Commander.
- ERC, un cliente IRC.
- Gnus, un completo lector de grupos de noticias y de correo electrónico.
- MULE, MultiLingual extensions to Emacs, extensiones multilingües para Emacs. Permite la edición de texto escrito en múltiples lenguajes, más o menos análogo a Unicode.
- Info, un navegador de ayuda en línea.
- Emacs-wiki, software de wiki para Emacs basado en Lisp.
- Planner, un gestor de información personal para Emacs.
- Tetris
- Pong
El problema del diseño de Emacs, basado en Lisp, es una penalización de rendimiento resultante del hecho de cargar e interpretar el código Lisp. En los sistemas donde fue implementado en primer lugar, Emacs era a menudo mucho más lento que otros editores de texto. Algunos acrónimos bromistas aluden a este hecho: Eight Megabytes And Constantly Swapping (de los días en que ocho megabytes era mucha memoria), Emacs Makes A Computer Slow, Eventually Mallocs All Computer Storage, y Eventually Makes All Computers Sick. No obstante, los ordenadores modernos son suficientemente rápidos, de manera que Emacs raramente se nota lento. De hecho, Emacs se inicia más rápidamente que la mayoría de procesadores de texto modernos. Otros acrónimos de broma hacen alusión al uso de teclas modificadoras para acceder a funcionalidades avanzadas: Escape Meta Alt Control Shift.
Plataformas
editarEmacs es uno de los programas de ordenador no triviales más portados a otras plataformas. Se ejecuta en una amplia variedad de sistemas operativos, entre ellos los sistemas de tipo Unix (GNU/Linux, BSD, Solaris, AIX, IRIX), Mac OS X,[7] [8] etc., MS-DOS, Microsoft Windows [9][10][11] y OpenVMS. Los sistemas Unix, tanto libres como propietarios, proporcionan frecuentemente Emacs junto con el sistema operativo.
Emacs se ejecuta tanto en entornos de terminal de texto como en entornos de interfaz gráfica de usuario (GUI). Emacs utiliza el Sistema de ventanas X para generar su GUI, ya sea directamente, o bien usando un "widget toolkit" como Motif, LessTif o GTK+. Emacs puede usar también los sistemas gráficos nativos de Mac OS X (utilizando la API Carbon) y de Microsoft Windows. La interfaz gráfica proporciona barras de menú, barras de herramientas, barras de scroll y menús contextuales.
Modos de edición
editarEmacs adapta su comportamiento al tipo de texto que está editando mediante modos de edición llamados "modos principales" ("major modes"). Los modos principales se definen para texto ordinario, código fuente para diversos lenguajes de programación, documentos HTML, TeX y LaTeX y muchos otros tipos de texto. Cada modo mayor modifica ciertas variables en Lisp para que Emacs se comporte de forma más conveniente para ese tipo concreto de texto. Habitualmente, definen las tablas para resaltado de sintaxis, usando distintos tipos de letra o colores para mostrar las palabras clave, comentarios, etc. Los modos principales también ofrecen comandos especiales de edición. Por ejemplo, los modos principales para lenguajes de programación definen habitualmente comandos para saltar al principio o al final de una función.
El comportamiento de Emacs puede ser más personalizado aún utilizando los "modos menores" ("minor modes"). Mientras que solamente se puede asociar un modo mayor con un buffer a la vez, se puede tener activos varios modos menores. Por ejemplo, el modo mayor para el lenguaje de programación C define un modo menor diferente para cada uno de los estilos de sangría más populares.
Personalización
editarMuchos usuarios de Emacs personalizan el editor para adaptarlo a sus necesidades. Hay tres formas principales de personalizar Emacs. La primera es la extensión customize, que permite que el usuario asigne valores a variables comunes de personalización, como el esquema de color, usando una interfaz gráfica. Esto está orientado a principiantes en Emacs que no quieren trabajar con código en Emacs Lisp.
La segunda forma es registrar pulsaciones de teclados en macros y reproducirlas para automatizar tareas complejas y repetitivas. Esto se suele hacer de forma ad hoc, descartando cada macro tras su uso, aunque las macros pueden ser guardadas e invocadas cuando se necesiten.
El tercer método para personalizar Emacs es usar Emacs Lisp. Habitualmente, el código Emacs Lisp proporcionado por el usuario se guarda en un fichero llamado .emacs
, que se carga cuando Emacs comienza. El fichero .emacs
se usa con frecuencia para asignar a variables y atajos de teclado valores distintos de la configuración por defecto, y para definir nuevos comandos para el usuario. Muchos usuarios avanzados tienen ficheros .emacs
de cientos de líneas, con personalizaciones que hacen que Emacs funcione de forma muy diferente del comportamiento por defecto.
Si un fragmento de código Emacs Lisp es útil en general, a menudo se empaqueta en forma de biblioteca y se distribuye a otros usuarios. Muchas bibliotecas de terceras partes se pueden encontrar en Internet. Por ejemplo, una biblioteca llamada Wikipedia-mode para editar artículos de Wikipedia. Hay incluso un grupo de noticias de Usenet, gnu.emacs.sources (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última)., usado para enviar nuevas bibliotecas. Algunas bibliotecas externas pueden convertirse en una biblioteca "estándar" de Emacs.
Documentación
editarEl primer Emacs incluía una potente biblioteca de ayuda que podía mostrar la documentación para cada comando, variable y función interna (es posible que haya originado esta técnica) A causa de esto, Emacs fue calificado de "programa autodocumentado". Este término no significa que Emacs escriba su propia documentación, sino que presenta su propia documentación al usuario. Esta característica hace que la documentación de Emacs sea muy accesible. Por ejemplo, el usuario puede averiguar qué comando está asociado a una combinación de teclas introduciendo simplemente C-h k
(que invoca al comando describe-key
), seguido de la combinación de teclas. Cada función incluía una cadena de documentación, pensada específicamente para ser mostrada al usuario en caso de que este lo pidiera. Esta práctica se extendió posteriormente a varios lenguajes de programación, como Lisp y Java.
El sistema de ayuda de Emacs es útil no solamente para principiantes, sino también para usuarios avanzados que escriban código en Emacs Lisp. Si la documentación para una función o variable no es suficiente, el sistema de ayuda puede ser utilizado para navegar entre el código fuente de Emacs Lisp, tanto para bibliotecas predefinidas como para bibliotecas externas instaladas. Por tanto, es muy conveniente programar en Emacs Lisp usando el mismo Emacs.
Además de la documentación incluida en el programa, Emacs tiene un manual especialmente largo, detallado y bien escrito. Una copia electrónica del Manual de GNU Emacs, escrita por Richard Stallman, se incluye con GNU Emacs y se puede ver con el navegador de Info predeterminado. XEmacs tiene un manual parecido, que se bifurcó del Manual de GNU Emacs al mismo tiempo que el programa XEmacs. Otros dos manuales, el Emacs Lisp Reference Manual (Manual de Referencia de Emacs Lisp), por Bill Lewis, Richard Stallman y Dan Laliberte, y Programming in Emacs Lisp (Programando en Emacs Lisp) por Robert Chassell, se incluyen también. Además de las versiones electrónicas, los tres manuales están disponibles en forma de libro, publicado por la Free Software Foundation.
Emacs también tiene un tutorial. Cuando Emacs se inicia sin especificar ningún fichero para editar, muestra instrucciones para ejecutar comandos simples de edición y para invocar el tutorial.
Internacionalización
editarEmacs soporta la edición de texto escrito en muchos lenguajes humanos. Hay soporte para muchos alfabetos, guiones, sistemas de escritura y convenciones culturales. Emacs proporciona revisión ortográfica para muchos lenguajes mediante la llamada a programas externos como ispell. Muchos sistemas de codificación están soportados, como por ejemplo UTF-8. La versión 21.5 de XEmacs tiene soporte parcial para Unicode. La versión 21.4 de GNU Emacs tiene un soporte similar. Emacs 22 tendrá mejor soporte. Todos estos esfuerzos para soportar Unicode utilizan una codificación interna específica de Emacs, con lo cual se necesita una conversión para cargar y guardar. UTF-8 será el sistema de codificación interna de Emacs en una versión futura de XEmacs 21.5, y seguramente en GNU Emacs 23.
No obstante, la interfaz de usuario de Emacs está en inglés y no ha sido traducida a otros idiomas, con la excepción del tutorial para principiantes. De modo no oficial, existen varios proyectos de traducción de la documentación de GNU Emacs, así como un proyecto de internacionalización y localización completas de GNU Emacs al español (véanse los enlaces).
Para usuarios con deficiencias visuales, hay un subsistema llamado Emacspeak que permite que el editor sea usado únicamente mediante una interfaz de audio.
Licencia
editarEl código fuente del programa, que incluye tanto los componentes en lenguaje C como en Emacs Lisp, está disponible libremente para su examen, modificación y redistribución, bajo los términos de la Licencia pública general de GNU (GNU GPL). Las versiones más antiguas de la documentación de GNU Emacs fueron liberadas bajo una licencia ad hoc que requería la inclusión de ciertos textos en cualquier copia modificada. En el manual de usuario de GNU Emacs, por ejemplo, esto incluía la forma de obtener GNU Emacs y el ensayo político de Richard Stallman, "El Manifesto de GNU". Los manuales de XEmacs, que fueron heredados de los antiguos manuales de GNU Emacs cuando el fork tuvo lugar, tienen la misma licencia. En cambio, las versiones más modernas de la documentación de GNU Emacs usan la licencia GFDL y usan "secciones invariantes" para requerir la inclusión de los mismos documentos, y también que los manuales se autoproclamen como Manuales GNU.
Uso de Emacs
editarComandos
editarDesde el shell de Unix, un fichero se puede abrir para ser editado escribiendo "emacs [nombre del fichero]". Si el fichero cuyo nombre se ha introducido no existe, se creará un nuevo fichero con este nombre. Por ejemplo, escribiendo "emacs xorg.conf" se editará el fichero xorg.conf en el directorio actual, si existe. No obstante, la documentación de Emacs recomienda iniciar el programa sin introducir un nombre de fichero, para evitar el mal hábito de iniciar un proceso separado para cada fichero a editar. La manera de sacarle partido completamente a Emacs es abrir todos los ficheros desde una única instancia del programa.
En el modo de edición normal, Emacs se comporta como otros editores de texto: Las teclas de caracteres (a, b, c, 1, 2, 3, etc.) sirven para insertar los caracteres correspondientes, las teclas de flecha mueven el punto de edición, la tecla backspace borra texto, etc. Otros comandos pueden ser invocados mediante teclas modificadoras, presionando Control o Meta (equivalente a la actual tecla Alt) o ambas, junto con otra tecla. Cada comando de edición es en realidad una llamada a una función en el entorno de Emacs Lisp. Incluso un comando tan simple como escribir a
para insertar el carácter a implica una llamada a una función. En este caso, la función sería self-insert-command
.
Más abajo se muestran algunos de los comandos básicos. Se pueden encontrar más en la lista de comandos de Emacs. La tecla de control se representa con una C mayúscula y la tecla de alternativa (Alt) o meta se representa con una M mayúscula.
Comando | Tecla | Descripción |
---|---|---|
forward-word |
M-f |
Avanzar una palabra. |
search-word |
C-s |
Buscar una palabra en el buffer. |
undo |
C-/ |
Deshacer el último cambio, y cambios anteriores si se pulsa repetidamente. |
keyboard-quit |
C-g |
Abortar el comando actual. |
fill-paragraph |
M-q |
Wrap text in ("fill") a paragraph. |
find-file |
C-x C-f |
Visitar un fichero (del cual se especifica el nombre) en su propio buffer de edición. |
save-buffer |
C-x C-s |
Guardar el buffer de edición actual en su fichero visitado. |
save-with-newname |
C-x C-w |
Guardar el buffer de edición actual como fichero cuyo nombre se ha de especificar. |
save-buffers-kill-emacs |
C-x C-c |
Preguntar al usuario si se quieren guardar los cambios, y después salir de Emacs. |
set-marker |
C-[space]/C-@ |
Colocar un marcador en el lugar donde se quiere cortar o copiar. |
cut |
C-w |
Cortar todo el texto entre el marcador y el cursor. |
copy |
M-w |
Copiar todo el texto entre el marcador y el cursor. |
paste |
C-y |
Pegar texto del portapapeles de Emacs. |
kill buffer |
C-x k |
Cerrar el buffer actual. |
Los comandos save-buffer
y save-buffers-kill-emacs
usan el presionado de teclas múltiple. Por ejemplo, C-x C-c
significa: mientras se mantiene presionada la tecla control, presionar x; mientras se mantiene presionada la tecla control, presionar c. Esta técnica, permite tener más comandos para el teclado, que cuando se utiliza el presionado simple de teclas, esta metodología fue popularizado por Emacs, proveniente desde TECMAC, una de las colecciones macro de TECO, predecesor de Emacs. Desde entonces ha sido una característica, inclusive hasta en redactores modernos de código como Visual Studio.
Cuando Emacs está ejecutando una interfaz gráfica, muchos comandos se pueden invocar desde el menú principal o la barra de herramientas en vez de utilizar el teclado. Sin embargo, muchos usuarios experimentados de Emacs prefieren utilizar el teclado porque es más rápido y conveniente una vez que las secuencias de teclas se han memorizado.
Algunos comandos Emacs trabajan mediante la invocación de programas externos (tal como ispell para la comprobación de ortografía o gcc para la compilación de programas), analizando la salida del programa, y mostrando el resultado en Emacs.
El Minibuffer
editarEl minibuffer, normalmente la línea inferior de la pantalla, es el espacio en el que Emacs pide información. En el minibuffer se puede introducir el texto que se debe encontrar en una búsqueda, el nombre de un fichero para leer o guardar e información similar. Cuando es aplicable, es posible utilizar el completado mediante la tecla del tabulador (tab completion).
Gestión de ficheros y visualización
editarEmacs mantiene texto en objetos denominados buffers. El usuario puede crear nuevos buffers y destruir los indeseados, y pueden existir al mismo tiempo varios buffers. La mayoría de los buffers contienen información cargada desde archivos de texto binarios, que el usuario puede editar y guardar de nuevo a disco. Los buffers se usan también para almacenar texto temporal, como las cadenas de documentación mostradas por la biblioteca help.
Tanto en modo de terminal de texto como en modo gráfico, Emacs es capaz de dividir el área de edición en secciones separadas (a las cuales se refiere como "ventanas" desde el año 1975, lo cual puede resultar confuso en sistemas con otro concepto de "ventana"), de forma que más de un buffer pueda ser mostrado a la vez. Esto tiene muchos posibles usos. Por ejemplo, una sección puede ser utilizada para mostrar el código fuente de un programa, mientras que otra muestra los resultados de compilar ese programa. En entornos gráficos, Emacs puede lanzar también múltiples ventanas gráficas, conocidas como "marcos" ("frames") en la terminología propia de Emacs.
El meñique de Emacs
editarDebido a que Emacs requiere un uso frecuente de las teclas modificadoras (y en particular, de la tecla Control, la cual normalmente se pulsa con el meñique), muchos usuarios asiduos de Emacs sufren lesiones por esfuerzo repetitivo, las cuales se manifiestan como molestias y dolor en los dedos meñiques. Este problema es tan frecuente que ha llegado a conocerse entre la comunidad de usuarios como el meñique de Emacs.
Una solución común consiste en intercambiar las funciones de las teclas Control y Caps Lock en la parte izquierda del teclado, o definir ambas teclas como Control.[12] También existen teclados especiales (Kinesis Contoured Keyboard) que colocan las teclas modificadoras en una posición en la que pueden ser fácilmente pulsadas con el pulgar, o con teclas modificadoras de gran tamaño en una posición en la que se puedan pulsar con la palma de la mano (Microsoft Natural Keyboard).
Cultura
editarLa Iglesia de Emacs
editarLa "Iglesia de Emacs" formada por Richard Stallman es una parodia sobre una religión para los usuarios de Emacs. En esa se refiere a Vi como el "editor de la bestia" (vi-vi-vi que sería 6-6-6 en numeración romana) pero esto no quiere decir que se esté en contra del uso de Vi (se dice que usar una versión libre de vi es solo una penitencia).
Stallman, también, encarna a un santo de la iglesia de Emacs llamado San Ignucio que usa un antiguo disco duro como aureola.
Véase también
editarReferencias
editar- ↑ https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html Manual de Emacs (en inglés)
- ↑ Stephen J., Turnbull. «XEmacs vs. GNU Emacs». Consultado el 27 de septiembre de 2006.
- ↑ [1]
- ↑ Jarosław Rzeszótko. (16 de Octubre de 2006) Stiff asks, great programmers answer Archivado el 8 de noviembre de 2006 en Wayback Machine. (en inglés)
- ↑ Meadow: Multilingual enhancement to gnu Emacs with ADvantages Over Windows (en inglés)
- ↑ Richard Stallman. (27 de Septiembre de 2000) VM and the FSF (en inglés)
- ↑ «Carbon Emacs Package». Archivado desde el original el 25 de enero de 2006. Consultado el 27 de septiembre de 2006.
- ↑ «Aquamacs es un Emacs para Mac OS X, sencillo de usar». Consultado el 27 de septiembre de 2006.
- ↑ B, Ramprasad (24 de junio de 2005). «GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000». Consultado el 27 de septiembre de 2006.
- ↑ Borgman, Lennart (2006). «EmacsW32 Home Page». Archivado desde el original el 6 de marzo de 2007. Consultado el 27 de septiembre de 2006.
- ↑ «GNU Emacs on Windows». Franz Inc. 2006. Consultado el 27 de septiembre de 2006.
- ↑ «How To Avoid The Emacs Pinky Problem». Xahlee.org. Consultado el 22 de julio de 2011.
Bibliografía
editar- Ciccarelli, Eugene (1978). An Introduction to the Emacs Editor. Cambridge, Massachusetts: MIT Artificial Intelligence Laboratory. AIM-447. PDF (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). HTML
- Stallman, Richard M. (1979, updated 1981). EMACS: The Extensible, Customizable, Self-Documenting Display Editor. Cambridge Massachusetts: MIT Artificial Intelligence Laboratory. AIM-519A. PDF (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). HTML
- Stallman, Richard M (2002). GNU Emacs Manual (15th edition edición). GNU Press. ISBN 1-882114-85-X.
- Chassel, Robert J. (2004). An Introduction to Programming in Emacs Lisp. GNU Press. ISBN 1-882114-56-6. Archivado desde el original el 22 de enero de 2007. Consultado el 21 de enero de 2007.
- Glickstein, Bob (1997 (April)). Writing GNU Emacs Extensions. O'Reilly & Associates. 1-56592-261-1.
- Cameron, Debra; Elliott, James; Loy, Marc (2004 (December)). Learning GNU Emacs, 3rd Edition. O'Reilly & Associates. ISBN 0-596-00648-9.
- Greenberg, Bernard S. (1979). "Multics Emacs: The History, Design and Implementation".
- Finseth, Craig A. (1991). The Craft of Text Editing -or- Emacs for the Modern World. Springer-Verlag & Co. ISBN 978-1-4116-8297-9. Archivado desde el original el 23 de diciembre de 2012. Consultado el 21 de enero de 2007.
- Zawinski, Jamie (21 de junio de 2005). «Emacs Timeline». Consultado el 30 de septiembre de 2006.
Enlaces externos
editar- Wikimedia Commons alberga una categoría multimedia sobre GNU Emacs.
- The GNU Emacs homepage (en inglés)
- Wikemacs (en inglés)
- Lista de modificaciones de Emacs (en inglés)