Emacs — Guía Básica de Configuración
Apuntes y comandos de Emacs: fundamentos de edición, atajos esenciales, configuración básica con use-package e inicio de la personalización en Linux.
Tesis
Emacs es un editor extensible y auto-documentado: cada comando se puede descubrir, evaluar y re-asignar desde la propia sesión. El coste de entrada es la notación de atajos (chords con C- y M-), pero la recompensa es un entorno donde editor, shell, terminal y gestión de archivos conviven en un solo proceso. La configuración se expresa en Elisp y se versiona como dotfiles.
Fundamentos de edición
Notación de atajos
C-= Ctrl (C-x= Ctrl+x)M-= Alt / Esc (M-x= Alt+x)
Comandos esenciales
| Atajo | Acción |
|---|---|
C-x C-f |
Abrir/buscar archivo (find-file) |
C-x C-s |
Guardar archivo |
C-x C-w |
Guardar como (write-file) |
C-x C-c |
Salir de Emacs |
C-g |
Cancelar comando / salir de un prompt |
C-x C-b |
Lista de buffers |
C-x b |
Cambiar de buffer |
C-x 1 |
Cerrar otras ventanas |
C-x 2 |
Dividir ventana verticalmente |
C-x 3 |
Dividir ventana horizontalmente |
M-x |
Ejecutar comando por nombre (ej. M-x shell) |
C-s |
Búsqueda incremental hacia adelante |
C-r |
Búsqueda incremental hacia atrás |
C-a / C-e |
Inicio / fin de línea |
C-v / M-v |
Página siguiente / anterior |
C-k |
Cortar hasta fin de línea |
C-y |
Pegar (yank) |
C-space |
Iniciar selección (marca); M-w copia, C-w corta |
C-/ |
Deshacer (undo) |
Modos
Emacs usa modos mayores (un por archivo, p. ej. python-mode, org-mode) y modos menores (complementos activables, p. ej. flyspell-mode). Ver el modo activo en la barra de modo; cambiar de modo con M-x <nombre>-mode.
Configuración básica en Linux
El archivo de configuración es ~/.emacs.d/init.el (o ~/.emacs). El patrón moderno es organizarlo por funcionalidad con use-package, que instala, configura y difiere la carga de paquetes:
;; repositorio de paquetes (MELPA)
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
;; bootstrap de use-package (si no está instalado)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile (require 'use-package))
;; número de línea
(global-display-line-numbers-mode 1)
;; autocompletado por defecto
(use-package vertico
:ensure t
:init (vertico-mode))
;; resaltado de pares de paréntesis
(use-package rainbow-delimiters
:ensure t
:hook (prog-mode . rainbow-delimiters-mode))
;; gestor de proyectos (projectile)
(use-package projectile
:ensure t
:init (projectile-mode +1)
:bind ("C-c p f" . projectile-find-file))
Configuración mínima de arranque
(setq inhibit-startup-screen t) ; quitar pantalla de bienvenida
(menu-bar-mode -1) ; ocultar barra de menú (opcional)
(scroll-bar-mode -1) ; ocultar scrollbar (opcional)
(tool-bar-mode -1) ; ocultar toolbar (opcional)
(setq backup-directory-alist '(("." . "~/.emacs.d/backups"))) ; backups en un dir
Flujo de trabajo
- Descubrimiento:
C-h kdescribe la función de una tecla;C-h fdocumenta una función;C-h mdocumenta el modo actual. - Shell integrada:
M-x shelloM-x eshellsin salir del editor. - Org-mode:
M-x org-modepara notas estructuradas, TODOs y exportación — el compañero natural de un flujo de estudio anotado.
Takeaways
- No memorices todo: usa
C-hpara descubrir yM-xpara ejecutar por nombre; Emacs se documenta solo. - La configuración es código: trata
init.elcomo un proyecto — versionado, organizado poruse-packagey comentado. - Empieza minimalista: editor +
use-package+ line numbers basta; añade paquetes cuando un flujo lo pida, no por anticipación.