Hola Emacs
Resumen de mi primer uso de GNU Emacs, el editor de texto del sistema operativo GNU con más de treinta años de existencia.
GNU Emacs es un editor de texto con más de treinta años de existencia, escrito originalmente por Richard Stallman como un componente para el sistema operativo GNU. Emacs es un editor muy popular entre programadores profesionales, científicos y gente de la academia. [1] Por esta razón decidí probarlo para ver qué tal funciona para mis propias necesidades: programación y documentación.
Este artículo es un resumen de mi primer encuentro con Emacs 23 en Debian 7, con notas sobre la funcionalidad más básica del programa. También dejo algunas preguntas, con y sin respuesta, que me surgieron durante este primer uso.
Contenido
Instalación
En Debian Emacs está empacado desde hace mucho tiempo, así que la instalación se hace como la de cualquier otro paquete:
# apt-get install emacs
Ejecutar el programa: ¿Interfaz gráfica o de texto?
Después de instalarlo, Emacs se puede abrir de dos formas: como una aplicación de escritorio o como una aplicación de terminal.

Figura 1. Pantallazo de Emacs 23 para escritorio (versión GTK+).
La versión de escritorio de Emacs (ver Figura 1) usa una interfaz gráfica GTK+ y puede abrirse desde Actividades → Aplicaciones → Programación → GNU Emacs 23.

Figura 2. Pantallazo de Emacs 23 en GNOME Terminal.
La versión de terminal, que es la que me interesa usar, se abre ejecutando la siguiente orden en un terminal real: [2]
$ emacs
Para hacer lo mismo, pero usando un emulador de terminal como el GNOME Terminal (ver Figura 2) que se abre desde Actividades → Accesorios → Terminal, se ejecuta la siguiente orden, donde -nw significa no window (si no se usa esta opción, se abre la versión gráfica):
$ emacs -nw
De aquí en adelante voy a usar Emacs en el GNOME Terminal por si necesito usar el navegador Web para resolver dudas (cuando sepa cómo navegar por la Web desde Emacs, porque hasta eso se puede hacer, tal vez empiece a trabajar en un terminal real).
Anatomía del programa

Figura 3. Áreas principales de un marco de Emacs en GNOME Terminal.
Al abrir Emacs, lo primero que se ve es una pantalla de bienvenida con instrucciones básicas sobre cómo empezar a usarlo. Se incluyen enlaces a documentos como un tutorial y el manual del programa. El tutorial, aunque no me gusta mucho, [3] es particularmente útil porque al terminarlo ya se puede mover uno por Emacs con cierta comodidad.
Inicialmente, la pantalla de Emacs, conocida como marco en la terminología de Emacs, está dividida en tres secciones (ver Figura 3):
- Barra de menús. Esta es un área en la parte superior del marco. Contiene la lista de comandos de Emacs. Se puede acceder a ella presionando la tecla F10.
- Ventana. Es el área principal del marco donde se muestra el texto de los archivos que uno está leyendo o editando.
- Área de eco. Es un área ubicada en la parte inferior del marco. Generalmente va mostrando los comandos que uno teclea, de ahí su nombre. Pero es un área multipropósito. Por ejemplo, se usa para mostrar mensajes informativos y también como minibuffer: una ventana especial que sirve para pedirle información al usuario.
Un paréntesis. Como en este punto empecé a encontrar algunos problemas, decidí listarlos en una sección propia al final de este documento (con posibles soluciones). Por ejemplo, a pesar de que estoy trabajando en una sesión en español, la pantalla de bienvenida está en inglés; el manual de Emacs está enlazado, pero no existe. Esto no me impide usar el programa, entonces sigo.
Cambio mental: comandos de teclado
En Emacs todo se maneja con el teclado, entonces se puede hacer a un lado el ratón. No sé qué tan bueno o malo pueda ser esto ergonómicamente hablando.
Además del uso casi exclusivo del teclado, también hay que hacer un cambio mental relacionado con los comandos básicos de edición de texto. Emacs no usa las convenciones modernas de atajos de teclado para acciones como copiar, cortar, pegar, guardar, etc. Incluso los nombres de algunas de estas acciones son diferentes en Emacs. Por ejemplo, uno no «abre» archivos sino que los visita; no se «corta» el texto sino que se mata; no se «pega» sino que se tira.
No sé cuál será la razón para no usar los términos y atajos comunes actualmente, pero esta es una de las primeras barreras que se encuentra uno al empezar. Y, aunque el tutorial y el manual explican los comandos básicos de edición de texto, todavía no sé, por ejemplo, cómo copiar fácilmente (como con el atajo Ctrl+C) usando las convenciones de Emacs.
Sin embargo, existe una opción llamada modo cua que permite usar los atajos comunes actualmente para cortar, copiar, pegar y deshacer. Tal vez lo use después, cuando encuentre cómo activarlo predeterminadamente.
Archivos y buffers
Para abrir un archivo, se usa el comando Ctrl+x Ctrl+f. Este comando le pide al usuario que escriba la ruta al archivo. Si el archivo especificado no existe, se crea un archivo nuevo con el nombre indicado en la ruta indicada. En la terminología de Emacs, a esta operación se le dice «visitar un archivo».
También se puede abrir archivos por medio del comando Ctrl+x d, que le pide al usuario la ubicación del directorio que quiere explorar. Para abrir un archivo específico se ubica el cursor de texto sobre él y se presiona Enter.
Al abrir un archivo, el texto del archivo se almacena en un objeto conocido como «buffer» y se muestra en la ventana actual (ver Figura 3). Si se abren varios archivos, el buffer del último siempre va a ser el que se muestre en la ventana actual y los demás quedan ocultos. Para alternar entre todos los buffers abiertos, se usan los comandos Ctrl+x ← y Ctrl+x →. También se pueden buscar los buffers por nombre usando el comando Ctrl+x b o listarlos todos con Ctrl+x Ctrl+b.
Ya con un buffer abierto, se puede empezar a escribir en él normalmente, teniendo en cuenta las convenciones diferentes que Emacs usa para tareas comunes. Por ejemplo:
- Seleccionar texto: Ctrl+Espacio para poner la marca de inicio de la selección y las teclas de flechas para extender o reducir la selección. Esto no funciona en terminales emulados cuando iBus está activo porque control más espacio es la misma combinación de teclas que se usa para alternar entre métodos de escritura (por ejemplo, entre japonés y español). Sin embargo, en los terminales emulados se puede usar Shift más las teclas de flechas para hacer la selección.
- Copiar: Alt+w.
- Cortar texto: Ctrl+w.
- Pegar texto: Ctrl+y.
- Deshacer: Ctrl+x u.
- Guardar buffer: Ctrl+x Ctrl+s.
- Guardar buffers: Ctrl+x s. Pregunta para guardar los cambios hechos en diferentes buffers abiertos.
- Cerrar buffer: Ctrl+x k.
Trabajo con ventanas
Una de las características que más me gusta de Emacs es la posibilidad de dividir las ventanas vertical u horizontalmente en más ventanas. Cada ventana puede mostrar un buffer diferente. De esta manera uno puede trabajar en una ventana a la izquierda y tener en la ventana de la derecha un manual para usar como referencia (ver Figura 2).
En Emacs solamente puede haber una ventana activa al tiempo. La ventana activa es la que contiene el cursor de texto visible. Cualquier comando que se ejecute se aplica a esta ventana.
Estas son las operaciones básicas con ventanas:
- Dividir ventana horizontalmente: Ctrl+x 2.
- Dividir ventana verticalmente: Ctrl+x 3.
- Mover el cursor entre ventanas: Ctrl+x o.
- Expandir ventana activa: Ctrl+x 1. Hace que la ventana activa sea la única visible.
Revisión ortográfica, buscar y reemplazar
Estas son algunas herramientas útiles que uso con frecuencia cuando edito documentos de diferentes tipos, así que es bueno saber cómo funcionan:
Alt+$ para revisar si la palabra sobre la cual está el cursor de texto está bien escrita.
Alt+x ispell para revisar la ortografía de todo el texto en el buffer o del texto seleccionado actualmente.
Ctrl+s para buscar del cursor hacia adelante. Después de indicar el texto para buscar, presionar la misma combinación de teclas busca la siguiente ocurrencia del texto. Enter termina la búsqueda. Ctrl+r busca del cursor hacia atrás.
Alt+x replace-string para reemplazar palabras. Esto reemplaza todas las ocurrencias de la palabra indicada por la palabra nueva.
Conclusión
Emacs es complejo, pero después de aprender los conceptos básicos me siento cómodo usándolo. Hasta ahora no me ofrece muchas ventajas si lo comparo con gedit, que es el editor que uso en este momento. Pero todavía no he hecho con Emacs todo lo que hago con gedit. Tengo que probar Emacs como IDE para los lenguajes de programación que uso actualmente para decidir si lo uso o lo dejo.
Problemas
Estos fueron los problemas que encontré durante este primer uso de Emacs. Algunos los pude resolver; para otros, la solución queda pendiente.
Interfaz y pantalla de bienvenida en inglés en sesión en español
A pesar de estar en una sesión de usuario en español en el sistema operativo, la interfaz de Emacs y el buffer de bienvenida aparecen en inglés. Deberían coincidir con el idioma de la sesión.
SOLUCIÓN: no sé.
El manual de Emacs no existe
En la pantalla de bienvenida de Emacs dice que teclee C-h r para ver el manual del programa. Pero el manual no se abre y aparece el siguiente mensaje:
Info file emacs does not exist
SOLUCIÓN: el manual de Emacs no se instala predeterminadamente con el programa porque no cumple con los estándates de libertad de Debian. Sin embargo, la FSF sí lo considera libre.
Instalar el siguiente paquete soluciona este problema:
# apt-get install emacs23-common-non-dfsg
El tutorial tiene varios errores tipográficos y ortográficos
Lo bueno del software libre es que uno lo puede clonar y hacerle cambios para mejorarlo.
SOLUCIÓN: como estos errores menores eran algo que yo mismo podía corregir, cloné el repositorio de Emacs, hice los cambios, generé un parche y se lo envié a los desarrolladores del programa. El cambio ya fue aceptado, aplicado y está disponible en la versión 24 de Emacs. No se sabe cuándo se van a reflejar los cambios en distribuciones como Debian.
No puedo escribir japonés
En Emacs se usa un comando diferente para cambiar entre métodos de escritura. La combinación de teclas que uno usa normalmente en las aplicaciones de escritorio (Ctrl+Espacio) significa otra cosa en Emacs.
SOLUCIÓN: para escribir japonés en Emacs se ejecuta el comando Alt-x set-input-method y se indica japanese como argumento.
A partir de ese momento, uno puede escribir en japonés:
みなさん、こんにちは!
Para alternar entre métodos de escritura, por ejemplo para volver a español y luego a japonés otra vez, se teclea Ctrl+\.
Sin embargo, esta solución solo sirve en terminales emulados como GNOME Terminal. Si escribo japonés en un terminal real cada carácter aparece como un rombo.
[1] | En los cursos que he hecho o que estoy haciendo en el MIT o en la UCB siempre recomiendan usar Emacs y hay laboratorios específicos para aprender a usarlo. Por ejemplo en los cursos CS 61A y CS 61B. Yukihiro Matsumoto, el padre del lenguaje de programación Ruby, dice que «vive» en Emacs. Y muchos otros desarrolladores competentes en la comunidad del sofware libre usan Emacs. |
[2] | Estando en el entorno de escritorio de GNOME se puede acceder a un terminal real presionando la combinación de teclas Ctrl+Alt+F1 (puede usar más terminales usando las teclas de función del 1 hasta el 6). Para volver al entorno de escritorio, se presiona Ctrl+Alt+F7. |
[3] | ¿Por qué no me gusta casi el tutorial de Emacs? La razón principal es que parece escrito para un público de hace años. |
Temas relacionados: