# Referencia Rápida de Emacs

*Navegación, edición, buffers, búsqueda, org mode, paquetes*

> Source: GNU Emacs Manual (gnu.org/software/emacs) · MIT

## Navegación

### Movimiento del cursor

| Command | Description |
|---------|-------------|
| `C-f / C-b` | Avanzar / retroceder un carácter |
| `M-f / M-b` | Avanzar / retroceder una palabra |
| `C-n / C-p` | Línea siguiente / anterior |
| `C-a / C-e` | Inicio / fin de línea |
| `M-a / M-e` | Inicio / fin de oración |
| `C-v / M-v` | Desplazar hacia abajo / arriba una página |
| `M-< / M->` | Inicio / fin del buffer |
| `M-g g` | Ir al número de línea |

### Posicionamiento en pantalla

| Command | Description |
|---------|-------------|
| `C-l` | Recentrar pantalla (ciclo superior/centro/inferior) |
| `C-M-l` | Reposicionar ventana heurísticamente |

## Edición

### Kill y Yank (Cortar y Pegar)

| Command | Description |
|---------|-------------|
| `C-k` | Matar hasta el final de línea |
| `C-w` | Matar región (cortar) |
| `M-w` | Copiar región |
| `C-y` | Yank (pegar) |
| `M-y` | Ciclar por el kill ring después de yank |
| `C-d` | Eliminar carácter siguiente |
| `M-d` | Matar palabra siguiente |
| `M-DEL` | Matar palabra anterior |

### Deshacer y transponer

| Command | Description |
|---------|-------------|
| `C-/ or C-_` | Deshacer |
| `C-g C-/` | Rehacer (deshacer el deshacer) |
| `C-t` | Transponer caracteres |
| `M-t` | Transponer palabras |
| `C-x C-t` | Transponer líneas |

### Selección

| Command | Description |
|---------|-------------|
| `C-SPC` | Establecer marca (iniciar selección) |
| `C-x h` | Seleccionar todo el buffer |
| `M-h` | Seleccionar párrafo |
| `C-x C-x` | Intercambiar punto y marca |

## Buffers y ventanas

### Buffers

| Command | Description |
|---------|-------------|
| `C-x b` | Cambiar a buffer |
| `C-x C-b` | Listar todos los buffers |
| `C-x k` | Cerrar buffer |
| `C-x LEFT / RIGHT` | Buffer anterior / siguiente |

### Ventanas

| Command | Description |
|---------|-------------|
| `C-x 2` | Dividir ventana horizontalmente |
| `C-x 3` | Dividir ventana verticalmente |
| `C-x 0` | Cerrar ventana actual |
| `C-x 1` | Cerrar todas las demás ventanas |
| `C-x o` | Cambiar a otra ventana |
| `C-x ^` | Ampliar ventana verticalmente |
| `C-x {` | Encoger ventana horizontalmente |

### Frames

| Command | Description |
|---------|-------------|
| `C-x 5 2` | Crear nuevo frame |
| `C-x 5 0` | Eliminar frame actual |
| `C-x 5 o` | Cambiar a otro frame |

## Búsqueda y reemplazo

### Búsqueda incremental

| Command | Description |
|---------|-------------|
| `C-s` | Buscar hacia adelante (incremental) |
| `C-r` | Buscar hacia atrás (incremental) |
| `C-s C-s` | Repetir última búsqueda hacia adelante |
| `C-M-s` | Búsqueda de regex hacia adelante |
| `C-M-r` | Búsqueda de regex hacia atrás |
| `RET` | Salir de la búsqueda en posición actual |
| `C-g` | Cancelar búsqueda, volver al inicio |

### Reemplazo

| Command | Description |
|---------|-------------|
| `M-%` | Reemplazo con consulta |
| `C-M-%` | Reemplazo con consulta por regex |
| `y` | Reemplazar esta coincidencia |
| `n` | Saltar esta coincidencia |
| `!` | Reemplazar todas las restantes |
| `q` | Salir del reemplazo |

## Archivos

### Operaciones con archivos

| Command | Description |
|---------|-------------|
| `C-x C-f` | Abrir archivo |
| `C-x C-s` | Guardar buffer actual |
| `C-x C-w` | Guardar como (escribir a nuevo archivo) |
| `C-x s` | Guardar todos los buffers modificados |
| `C-x C-r` | Abrir archivo en solo lectura |
| `C-x i` | Insertar contenido de archivo en el punto |

### Dired (Editor de directorios)

| Command | Description |
|---------|-------------|
| `C-x d` | Abrir directorio en Dired |
| `d / x` | Marcar para eliminar / ejecutar eliminaciones |
| `R` | Renombrar / mover archivo |
| `C` | Copiar archivo |
| `+` | Crear directorio |
| `g` | Actualizar listado |

## Modos

### Modos principales

| Command | Description |
|---------|-------------|
| `M-x fundamental-mode` | Edición de texto plano |
| `M-x text-mode` | Texto con relleno y corrector ortográfico |
| `M-x prog-mode` | Base para modos de programación |
| `M-x python-mode` | Edición e indentación de Python |
| `M-x shell-mode` | Shell interactivo en buffer |

### Modos secundarios útiles

| Command | Description |
|---------|-------------|
| `M-x display-line-numbers-mode` | Activar/desactivar números de línea |
| `M-x auto-fill-mode` | Ajuste automático en la columna de relleno |
| `M-x flyspell-mode` | Corrección ortográfica al vuelo |
| `M-x column-number-mode` | Mostrar columna en la barra de modo |
| `M-x whitespace-mode` | Visualizar espacios en blanco |
| `M-x electric-pair-mode` | Cerrar automáticamente paréntesis y comillas |

## Fundamentos de Org Mode

### Estructura

| Command | Description |
|---------|-------------|
| `* / ** / ***` | Niveles de encabezado 1 / 2 / 3 |
| `TAB` | Ciclar visibilidad del encabezado |
| `S-TAB` | Ciclar visibilidad global |
| `M-RET` | Insertar encabezado al mismo nivel |
| `M-LEFT / M-RIGHT` | Promover / degradar encabezado |
| `M-UP / M-DOWN` | Mover subárbol arriba / abajo |

### TODO y casillas de verificación

| Command | Description |
|---------|-------------|
| `C-c C-t` | Ciclar estado TODO |
| `C-c C-d` | Establecer fecha límite |
| `C-c C-s` | Programar elemento |
| `C-c C-c` | Alternar casilla [ ] / [X] |
| `C-c a` | Abrir vista de agenda |

### Enlaces y exportación

| Command | Description |
|---------|-------------|
| `C-c C-l` | Insertar / editar enlace |
| `C-c C-o` | Abrir enlace en el punto |
| `C-c C-e` | Despachador de exportación (HTML, PDF, etc.) |

## Gestión de paquetes

### package.el

| Command | Description |
|---------|-------------|
| `M-x list-packages` | Explorar paquetes disponibles |
| `i / d / x` | Marcar instalar / eliminar / ejecutar |
| `U` | Marcar todos los actualizables |
| `M-x package-refresh-contents` | Actualizar lista de paquetes |

### use-package (init.el)

```
(use-package magit
  :ensure t
  :bind ("C-x g" . magit-status))
(use-package company
  :ensure t
  :hook (prog-mode . company-mode))
```

## Configuración

### Archivos de configuración principales

| Command | Description |
|---------|-------------|
| `~/.emacs.d/init.el` | Archivo de configuración principal |
| `~/.emacs.d/early-init.el` | Inicialización temprana (antes de GUI, Emacs 27+) |
| `~/.emacs.d/custom.el` | Configuración escrita por Customize |

### Configuración común

```
(setq inhibit-startup-screen t)
(tool-bar-mode -1)
(set-face-attribute 'default nil :height 120)
(global-display-line-numbers-mode 1)
(setq make-backup-files nil)
```

### Sistema de ayuda

| Command | Description |
|---------|-------------|
| `C-h k` | Describir atajo de teclado |
| `C-h f` | Describir función |
| `C-h v` | Describir variable |
| `C-h m` | Describir modos actuales |
| `C-h t` | Abrir tutorial de Emacs |
| `C-h i` | Abrir documentación Info |

## Patrones comunes

### Edición rectangular

| Command | Description |
|---------|-------------|
| `C-x SPC` | Iniciar modo de marca rectangular |
| `C-x r k` | Matar rectángulo |
| `C-x r y` | Pegar rectángulo |
| `C-x r t` | Reemplazar rectángulo con cadena |
| `C-x r o` | Insertar rectángulo en blanco |

### Macros

| Command | Description |
|---------|-------------|
| `C-x (` | Iniciar grabación de macro |
| `C-x )` | Detener grabación de macro |
| `C-x e` | Ejecutar última macro |
| `C-u 10 C-x e` | Ejecutar macro 10 veces |
| `M-x name-last-kbd-macro` | Nombrar macro para reutilizarla |

### Shell y evaluación

| Command | Description |
|---------|-------------|
| `M-x shell` | Abrir shell en buffer |
| `M-x eshell` | Shell de Emacs Lisp |
| `M-!` | Ejecutar comando shell |
| `M-x eval-buffer` | Evaluar todo el buffer como Elisp |
| `C-x C-e` | Evaluar expresión Elisp antes del punto |
