← Blog

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 k describe la función de una tecla; C-h f documenta una función; C-h m documenta el modo actual.
  • Shell integrada: M-x shell o M-x eshell sin salir del editor.
  • Org-mode: M-x org-mode para notas estructuradas, TODOs y exportación — el compañero natural de un flujo de estudio anotado.

Takeaways

  1. No memorices todo: usa C-h para descubrir y M-x para ejecutar por nombre; Emacs se documenta solo.
  2. La configuración es código: trata init.el como un proyecto — versionado, organizado por use-package y comentado.
  3. Empieza minimalista: editor + use-package + line numbers basta; añade paquetes cuando un flujo lo pida, no por anticipación.