Emacs

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

Convenciones

Términos

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/")))

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.

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: