Emacs

  1. Convenciones
  2. Términos
  3. Cómo ejecutar
  4. Comandos Emacs
    1. Operaciones sobre comandos
    2. Keybindings
  5. Comandos de ayuda
  6. Elementos de Emacs
  7. Modos de edición y línea de modo
  8. Elisp
  9. Gestión de sesiones
  10. Gestión de ventanas
  11. Gestión de buffers
  12. Mover el cursor
    1. De palabra en palabra
    2. Líneas y oraciones
    3. Mover a lo largo del texto completo (buffer)
  13. Seleccionar texto y regiones
  14. Edición de texto
    1. Borrar
    2. Cortar
    3. Copiar, pegar y killring
    4. Transponer
    5. Codificación de caracteres
  15. Buscar y reemplazar
  16. Macros de teclado
  17. Conexiones remotas
  18. Bookmarks
  19. Administrar una instalación de Emacs
  20. Fichero de configuración
    1. Backups de ficheros
  21. Paquetes Emacs
  22. Servidor
  23. Emacs en entorno Wintel
    1. Servidor emacs
    2. Tramp mode y ssh
    3. Fichero de configuración .emacs
    4. XKeymacs
  24. Emacs como IDE
    1. Java
  25. Recursos de GNU/Emacs y Emacs Lisp

Convenciones

Términos

Cómo ejecutar

Si lanzamos GNU/Emacs desde un entorno de ventanas se hará automáticamente en modo de interfaz gráfica. Podemos forzar la ejecución en modo terminal con el modificador -nw.

También podemos usar le modificador -q para ejecutar emacs sin leer el fichero init.el y -Q tampoco lee la configuración global por lo que lanzaría una instancia "vanilla", sin configurar.

Comandos Emacs

Emacs dispone de comandos internos en forma de palabras separadas por guiones medios. Se puede ejecutar cualquier comando directamente con la opción M-x nombre-comando. Cuando ejecutamos comandos así, Emacs llama internamente al meta comando <<execute-extended-command>>. Las otras dos formas de ejecutar comandos es pulsando la combinación de teclas asociadas si es que las tiene o mediante el menú o barra de herramientas si tuviera una entrada.

Operaciones sobre comandos

Keybindings

Algunos comandos tienen mapeado una combinación de teclas (keybindings). Si ejecutamos un comando mediante el método M-x y este tuviera asignada una combinación, Emacs nos avisará de su existencia.

Comandos de ayuda

En debian muchos ficheros de documentación pueden no existir debido al conflicto entre DFSG y la licencia GFDL. Instalar el paquete emacs24-common-non-dfsg.

Elementos de Emacs

emacs window.png

Modos de edición y línea de modo

Existen dos tipos de modos de edición: modos mayores y menores. Los modos mayores afectan al buffer en términos generales y solo puede haber uno cargado. El menú cambia de opciones según el modo mayor.

Los modos menores pueden cargarse los que se necesiten y son independientes del resto y del modo mayor.

Comandos para gestionar modos

La línea de modo presenta esta información:

Elisp

Elisp o Emacs lisp es un subconjunto del lenguaje Lisp que es interpretado por Emacs.

Trabajar con variables

Trabajar con funciones

Algunas variables importantes

Gestión de sesiones

Gestión de ventanas

Redimensionar y ajustar tamaños

Gestión de buffers

Mover el cursor

De forma predeterminada la tecla C se emplea en caracteres y líneas mientras que la tecla M se emplea en palabras y oraciones:

De palabra en palabra

Líneas y oraciones

Mover a lo largo del texto completo (buffer)

Seleccionar texto y regiones

Para trabajar con regiones de columna el primer vértice se marca con C-SPC y en el segundo:

Edición y trabajo con texto

En Emacs se diferencian dos borrados <<erase>> borra de forma que los datos son irrecuperables y <<kill>> que sería el equivalente a cortar en muchos editores (los caracteres se borran pero quedan en el buffer <<kill-ring>>).

Borrar

Cortar

Puede ser útil la secuencia C-SPC marcar región con el cursor y C-w para borrarla.

Copiar, pegar y killring

Para copiar una línea al estilo yy de vi no hay definida ni una función ni un keybinding por defecto. Se podría hacer de varias formas c-a c-k c-k o C-a C-SPC C-n M-w

Transponer

Toma el elemento anterior al cursor y lo transpone n unidades, siendo 1 por defecto.

Codificación de caracteres

Útil para introducir cualquier carácter arbitrariamente. Por ejemplo, cuando el sistema no está en español podemos introducir caracteres no anglosajones así:

c-x 8 'a -> á
c-x 8 'e -> é
c-x 8 'i -> í
c-x 8 'o -> ó
c-x 8 'u -> ú
c-x 8 ?  -> ¿
c-x 8 '! -> ¡

Columnas

Líneas

Buscar y reemplazar

C-S y C-R Sin patrón repiten la búsqueda desde la última ocurrencia. Cuando comienza una búsqueda se actualiza la marca al punto previo del cursor.

Eliminando saltos de línea C-x h M-% C-q C-j INTRO INTRO !

Macros de teclado

Conexiones remotas

Con Emacs se puede trabajar en hosts remotos sin X Window (normalmente serán servidores) de varias formas:

  1. Desde una conexión de consola ya establecida telnet o ssh, y ejecutando Emacs en el host remoto. Para forzar la ejecución de Emacs en modo consola existe la opción -nw. Si necesitamos instalarlo, el paquete emacs-nox es más ligero y no depende de X Window. apt-get install emacs-nox.
  2. Conectarnos a un servidor desde nuestro Emacs en local como cliente, para esto hay varios modos pero tramp unifica casi todos los protocolos y viene instalado por defecto en las últimas versiones de Emacs. C-x C-f /ssh:[usuario@]host[#puerto]:[fichero].

tramp ejecuta la Shell definida en la variable shell-file-name. Para recorrer el historial C-Up, C-Down.

Bookmarks

Los marcadores son un atajo y sirven para memorizar un destino. Son muy útiles para accesos a hosts remotos:

Administrar una instalación de Emacs

Fichero de configuración

Al iniciarse, emacs intenta abrir un fichero con un programa en lisp que se encuentra en /.emacs, /.emacs.el, o /.emacs.d/init.el. La variable user-init-file contiene el fichero que está usando una instancia emacs. (ver con C-h v).

Backups de ficheros

Paquetes Emacs

Los paquetes Emacs llamados ELPA se pueden instalar desde un servidor repositorio. Por defecto el repositorio ELPA está configurado, aunque podemos añadir más.

Añadir repositorios de paquetes en .emacs (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")("marmalade" . "https://marmalade-repo.org/packages/")("melpa" . "https://melpa.org/packages/")))

Servidor

Ejecutar Emacs como servidor presenta varias ventajas como que se inicia más rápido y se mantiene la sesión.

Podemos definir la variable EDITOR o crear un alias alias em="emacsclient -c".

Emacs en entorno Wintel

Particularidades que nos encontramos en una instalación de GNU/Emacs en sistemas Microsoft.

Servidor Emacs

La forma correcta de ejecutar Emacs es mediante un servidor Emacs. Preparar una tarea que inicie emacs.exe con el parámetro --daemon y asociar los ficheros de texto a emacsclientw.exe, en luagar a emacs.exe. Cada fichero que abarmos se hará en un buffer. Para ejecutar Emacs como servidor el directorio /.emacs.d/server tiene que ser propietario del usuario de la sesión. (cambiar en propiedades, pestaña seguridad, avanzado, pestaña propietario).

Tramp mode y ssh

En Windows no suele haber clientes ssh nativos. Instalar los clientes ssh y plink de putty. Añadir a la variable PATH, la ruta donde se instalaron los ejecutable de putty, ejemplo C:\Program Files\putty.

C-x C-f /plink:[usuario@]host[#puerto]:[fichero]

o

C-x C-f /pscp:[usuario@]host[#puerto]:[fichero]

Otra posibilidad que puede funcionar según la instalación. En .emacs agregamos (setq tramp-default-method "plink")

Fichero de configuración .emacs

El fichero de configuración .init.el se llama .emacs en entornos Microsoft. Un truco para encontrar nuestro .emacs es abrir C-x C-f ~/.emacs y ya podemos ver la ruta. Por ejemplo en la última instalación se guardó en C:\Users\nombre\AppData\Roaming.

XKeymacs

Combinacines de teclas Emacs en otras aplicaciones en sistemas operativos Windows de Microsoft.

XKeymacs

Emacs como IDE

Java

Recursos de GNU/Emacs y Emacs Lisp

Wikis, manuales y howtos

Tutoriales, podcasts y screencasts

Blogs y páginas personales

Post de personas involucradas en la comunidad Emacs trucos, recetas, actualidad y noticias: