---
title: "Mejores Plugins de Oh My ZSH para 2026: Sin Git Clone"
description: "Una lista práctica de los mejores plugins de Oh My Zsh para 2026. Autosuggestions y syntax highlighting ya vienen integrados. Configura 20+ plugins esenciales en minutos."
date: 2026-10-04
categories: ["linux"]
tags: ["zsh","terminal","command-line"]
---

import Button from "@components/widgets/Button.astro";
import Notice from "@components/widgets/Notice.astro";
import ListCheck from "@components/widgets/ListCheck.astro";
import Accordion from "@components/widgets/Accordion.astro";
import Tabs from "@components/widgets/Tabs.astro";
import Tab from "@components/widgets/Tab.astro";

Los plugins de Oh My Zsh añaden sugerencias de comandos, resaltado de sintaxis y atajos que aceleran tu trabajo en la terminal. Desde septiembre de 2026, los dos más populares vienen con Oh My Zsh de fábrica. Estos son los mejores plugins de Oh My Zsh para 2026, empezando por los dos que ya no tienes que hacer `git clone`.

Si pasas tiempo de verdad en la terminal, los plugins correctos hacen una diferencia notable. Estos son los que uso y recomiendo. Los conteos de estrellas y versiones de abajo son puntuales a octubre de 2026.

<Notice type="success" title="Qué cambió en 2026">
Oh My Zsh mergeó el PR #14088 el 2026-09-10 y ahora empaqueta `zsh-autosuggestions` y `zsh-syntax-highlighting`. No vienen activados por defecto. Los añades a `plugins=(...)` y recargas. No necesitas clonar nada ni cablear líneas `source`.
</Notice>

## Instalando plugins de Oh My Zsh en 2026 (sin git clone requerido)

Conseguir un setup funcional lleva unos minutos. La diferencia en 2026 es que los dos plugins esenciales ya no necesitan un `git clone` manual.

Todo en esta guía es gratis y corre en local. Cuesta 0 $/mes y no necesita cuenta ni API key.

**Prerequisitos:**

<ListCheck>
<ul>
<li>zsh 5.9 o más nuevo (el mirror de zsh muestra un tag 5.9.2 junto a 5.9; trata 5.9+ como la base)</li>
<li>git y curl</li>
<li>macOS o Linux, cualquier terminal</li>
<li>Un `~/.zshrc` existente (lo crea el instalador de Oh My Zsh si no tienes uno)</li>
</ul>
</ListCheck>

<Accordion label="Instalando Oh My ZSH" group="setup" expanded="true">
Primero, instala Oh My ZSH con el comando oficial:

```shell
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

El script maneja el setup. Tu terminal reinicia con un prompt nuevo cuando termina.

**Verifica**: `echo $ZSH` imprime la ruta de instalación (normalmente `~/.oh-my-zsh`) y el prompt cambió. No hay `omz --version`, así que esas dos comprobaciones son la confirmación. Las actualizaciones posteriores vienen de `omz update`.
</Accordion>

<Accordion label="Activando plugins integrados (2026: sin clone necesario)" group="setup">
`zsh-autosuggestions` y `zsh-syntax-highlighting` ahora vienen dentro de Oh My Zsh. Añádelos a la línea de plugins en `~/.zshrc`:

```zsh
plugins=(
  git
  zsh-autosuggestions      # built-in since 2026-09-10
  zsh-syntax-highlighting  # MUST stay last
)
```

Notas honestas sobre lo empaquetado: autosuggestions viene más o menos al nivel de upstream v0.7.1, y syntax-highlighting es un snapshot de desarrollo de 0.8.x (el tag estable upstream es 0.8.0). Suficiente para uso diario, solo no esperes el commit más nuevo de upstream.

El `git clone` manual ahora es solo para plugins genuinamente de terceros. Ese flujo está en la [sección de instalación de terceros](#instalando-plugins-de-terceros-manual-homebrew) de abajo.
</Accordion>

<Accordion label="Activando y recargando" group="setup">
Una vez instalados o activados, activas los plugins en tu archivo de configuración:

1. Abre tu archivo `.zshrc`:
```shell
nano ~/.zshrc
```

2. Encuentra la línea de plugins y añade los que quieras:
```shell
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
```

3. Recarga el shell:
```shell
exec zsh
```

`omz reload` y `source ~/.zshrc` también funcionan. Yo prefiero `exec zsh` porque reemplaza el proceso de shell actual en vez de apilar config encima.

**Verifica**: `echo $plugins` lista los nombres de plugin. Luego teclea un comando parcialmente conocido de tu historial y deberías ver una sugerencia gris a la derecha del cursor (la flecha derecha la acepta). Teclea cualquier comando válido y se muestra verde, uno inválido se muestra rojo.
</Accordion>

<Notice type="info" title="Consejo rápido">
Corre `source ~/.zshrc` tras los cambios para aplicarlos sin reiniciar.
</Notice>

![Árbol de decisión para instalar plugins de Oh My Zsh en 2026: comprueba primero omz plugin list, activa los integrados sin clone, y solo haz git clone de plugins de terceros en el directorio custom de plugins](@assets/images/23/11/omz-plugin-install-decision-tree.svg)

### Descubre plugins con la CLI `omz`

Oh My Zsh trae un comando `omz` que la mayoría de guías nunca mencionan. Reemplaza navegar la wiki cuando quieres saber qué hay disponible:

```zsh
omz plugin list          # every plugin that ships with Oh My Zsh
omz plugin info eza      # what a plugin does and how to use it
omz plugin enable eza    # toggles a plugin in your config
omz plugin disable eza
omz theme list           # available themes
omz theme set robbyrussell
omz changelog            # what changed recently
omz reload               # reload the shell config
omz update               # update Oh My Zsh itself
```

<Notice type="warning" title="Flag eliminado">
`omz update --unattended` fue eliminado upstream porque tenía efectos secundarios. Usa `omz update` a secas.
</Notice>

**Verifica**: `omz plugin info <nombre>` da error en nombres desconocidos, lo que lo convierte en un chequeo de ortografía gratis. Tras `omz plugin enable`, `echo $plugins` muestra el nombre.

### Mantén Oh My Zsh actualizado

Un framework de shell sigue siendo software que se ejecuta en cada prompt. Mantenlo al día o fíjalo deliberadamente:

```zsh
# in ~/.zshrc, before oh-my-zsh.sh is sourced
zstyle ':omz:update' mode auto      # or: reminder | disabled
zstyle ':omz:update' frequency 7    # check every 7 days
```

Mi default es `mode auto` con `frequency 7`. Auto-actualiza o fija, pero no dejes que un framework de shell derive durante un año.

Una nota de ops: `omz update` corre `git pull` en `$ZSH`, así que un árbol `$ZSH` sucio (archivos editados a mano bajo `~/.oh-my-zsh`) rompe las actualizaciones. Mantén tu propia config en `~/.zshrc`, no parcheando archivos del framework.

### Troubleshooting de problemas de plugins

Cuando un plugin no hace nada, recorre esta lista antes de reinstalar nada:

- El plugin no carga. Falta en `plugins=(...)`, el nombre está mal tecleado, o necesita un binario externo que no has instalado (`zoxide`, `eza`, `fzf`, `op`).
- Los colores de resaltado están rancios o mal. `zsh-syntax-highlighting` no es el último del array. Arregla el orden primero.
- `command-not-found` silenciosamente no hace nada. Necesita la base de datos de la distro (pkgfile en Arch, el paquete `command-not-found` en Ubuntu/Debian). Sin ella el plugin es no-op.
- Algo va lento o roto y no sabes qué plugin es. `zsh -f` arranca zsh sin archivos rc. Si el problema desaparece, es causado por un plugin.
- Recarga bien. `exec zsh` gana a abrir una pestaña nueva de terminal, y prueba que la config carga desde cero.

Para sanity-checkear una instalación limpia sin tocar tu propia máquina, corre un contenedor desechable:

```shell
docker run -it --rm zshusers/zsh
```

<Notice type="warning" title="zsh-syntax-highlighting debe ir el último">
Tiene que cargar después de los plugins que envuelven widgets ZLE. Si los colores quedan rancios o mal, comprueba el orden del array antes que cualquier otra cosa.
</Notice>

## Plugins esenciales de Oh My Zsh

Las entradas de abajo están etiquetadas por coste de instalación: `Built-in · zero config` (añade el nombre y listo), `Built-in · needs binary` (instala una herramienta primero), `Third-party · clone` (el único caso que aún necesita `git clone`).

### Plugins de productividad de núcleo, ahora integrados

**1. [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions)** (`Built-in · zero config`)

Sugiere comandos mientras tecleas, basándose en tu historial. Un "texto fantasma" gris aparece a la derecha del cursor y la flecha derecha lo acepta, lo que ahorra teclear en comandos repetitivos. Añade `zsh-autosuggestions` a `plugins=(...)`. Está integrado en Oh My Zsh desde 2026-09-10 (empaquetado ≈ v0.7.1), así que no hay paso `git clone`. El tutorial [How to Enable Command Autocomplete in ZSH](/enable-command-autocomplete-in-zsh/) aún muestra el viejo flujo de `git clone`; en el Oh My Zsh actual la activación integrada de arriba es suficiente.

**2. [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting)** (`Built-in · zero config`)

Colorea tus comandos mientras tecleas: rojo para comandos inválidos, verde para válidos. Caza typos y flags malos antes de dar enter. Añade `zsh-syntax-highlighting` a `plugins=(...)` y mantenlo **el último**. Empaquetado desde master upstream (tag estable 0.8.0). El tutorial [How to Enable Syntax Highlighting in Zsh](/enable-syntax-highlighting-zsh/) tiene la misma nota de refresco: el paso de clone desapareció para usuarios de Oh My Zsh.

**3. [z](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/z)** (`Built-in · zero config`)

Salta a directorios usados frecuentemente sin rutas completas. `z documents` te deja en `~/Documents`, `z proj` en `~/Projects`. Está integrado, así que solo añade `z` a `plugins=(...)`, y aprende de tu historial de `cd`. La ruta de actualización es [zoxide](https://github.com/ajeetdsouza/zoxide), el reemplazo moderno (Rust, v0.10.0, ~40k estrellas). Instala el binario primero (`brew install zoxide`, apt, o cargo), luego activa el plugin first-party `zoxide`. `ZOXIDE_CMD_OVERRIDE` te deja seguir tecleando `z` mientras corre zoxide por debajo. Más en [Zoxide: una forma más lista de navegar tu terminal](/es/zoxide-tutorial/).

**4. [git](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git)** (`Built-in · zero config`)

Aliases y completions para operaciones Git. Los que uso a diario: `gst` (git status), `gco` (git checkout), `gaa` (git add --all), `gcm "message"` (git commit -m). Este ha sido estable durante años y acelera el 90% aburrido del trabajo con Git.

**5. [history-substring-search](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/history-substring-search)** (`Built-in · zero config`)

Teclea parte de un comando anterior, luego usa ↑/↓ para ciclar por coincidencias del historial que contengan esa cadena. Encuentras comandos previos sin scroll infinito. Para historial que sobrevive cambios de máquina, mira Atuin en Alternativas Modernas abajo.

<Notice type="info" title="Consejo de recuerdo de comandos">
Combina history-substring-search con zsh-autosuggestions. Uno encuentra el comando viejo, el otro lo sugiere mientras tecleas. Si quieres historial que sobreviva cambios de máquina, mira Atuin.
</Notice>

### Plugins de desarrollo y DevOps

**6. [docker](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/docker)** (`Built-in · zero config`)

Autocompletion y aliases para comandos Docker. Menos teclear en subcomandos `docker` y menos typos en listas de flags largas.

**7. [docker-compose](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/docker-compose)** (`Built-in · zero config`)

Completion para setups multi-contenedor. Ahora auto-detecta el `docker-compose` legacy frente al subcomando `docker compose` v2. La tab completion caza typos antes de que rompan tu stack.

**8. [npm](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/npm)** (`Built-in · zero config`)

Completion y aliases para npm, más info en el prompt como nombre y versión de paquete. Gestión de paquetes más rápida sin memorizar nombres de scripts.

**9. [kubectl](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/kubectl)** (`Built-in · zero config`)

Completion y aliases para `kubectl`. Nombres de recursos, namespaces y flags completan bien. Eso importa cuando estás en un contexto de producción.

**10. [aws](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/aws)** (`Built-in · zero config`)

Completion para la AWS CLI más helpers de cambio de perfil. Gestión de perfiles más fácil cuando juegas con varias cuentas.

**11. [codex](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/codex)** (`Built-in · zero config`)

Completion para la OpenAI Codex CLI. Tab completion para un agente de código IA en la terminal. Para el ecosistema de agentes más amplio mira [las mejores herramientas y agentes de código IA](/ai-coding-tools/).

**12. Gestores de toolchain** (`Built-in · zero config`)

Plugins first-party para gestores de versiones modernos: `mise`, `uv` / `uv-env`, `fnm`, `volta`. Estos reemplazan los hábitos de la era nvm con un setup de completion consistente. También first-party ahora y vale conocer: `jj` (jujutsu VCS), `bun`, `deno`, `tailscale`, `k9s`, `helm`, `argocd`, `fluxcd`, `opentofu`, `direnv`, `poetry` / `poetry-env`, `ruff`. `omz plugin list` cubre la mayoría de una caja de herramientas DevOps sin un solo clone.

### Plugins de utilidad y conveniencia

**13. [web-search](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/web-search)** (`Built-in · zero config`)

Abre búsquedas web desde la terminal: `google "search term"`, `bing "query"`, `duckduckgo "topic"`.

**14. [extract](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/extract)** (`Built-in · zero config`)

Un comando para cada formato de archivo: `extract filename.zip`, `extract archive.tar.gz`. ZIP, TAR, GZ, BZ2, 7Z, RAR, DMG y más. Se acabó recordar qué flags necesita cada formato.

**15. [1password](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/1password)** (`Built-in · zero config`)

Integración first-party de 1Password. `opswd service-name` recorre usuario, luego contraseña, luego TOTP, con una confirmación entre cada paso. El portapapeles se auto-limpia tras 20 segundos y los nombres de servicio completan con tab. Necesita la CLI de 1Password (`op` v2) con sesión iniciada; el desbloqueo biométrico funciona. Credenciales sin salir de la terminal, y sin pegar secrets en el historial del shell.

**16. [sudo](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/sudo)** (`Built-in · zero config`)

Prefija el comando actual con `sudo` cuando pulsas `ESC` dos veces. La herramienta correcta para esos momentos de "permission denied" cuando el comando ya está tecleado.

**17. [colored-man-pages](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/colored-man-pages)** (`Built-in · zero config`)

Añade colores a las man pages. Las opciones y flags se vuelven escaneables en vez de una pared de texto.

**18. [eza](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/eza)** (`Built-in · needs binary`)

Reemplaza los aliases de `ls` con [eza](https://github.com/eza-community/eza): colores, iconos, estado git y vista de árbol (v0.23.5, ~23k estrellas). Instala el binario primero (`brew install eza`, tu paquete de distro, o cargo), luego añade `eza` a `plugins=(...)`. Las opciones `zstyle ':omz:plugins:eza' ...` como `dirs-first` deben ponerse **antes** de que Oh My Zsh cargue los plugins, así que ponlas encima de la línea `source $ZSH/oh-my-zsh.sh`. Salida de `ls` que puedes leer de un vistazo.

### Plugins avanzados

**19. [fzf](https://github.com/junegunn/fzf)** (`Built-in · needs binary`)

Fuzzy finder para archivos, historial y cualquier cosa que le pases por pipe (fzf v0.74.x, ~83k estrellas). Instálalo en 2026 con `brew install fzf` en macOS o `apt install fzf` en Debian/Ubuntu (la versión de apt va por detrás de upstream), o usa el script de instalación oficial del repo. Luego activa el plugin `fzf` de Oh My Zsh **o** añade `eval "$(fzf --zsh)"` a `.zshrc` (disponible desde fzf v0.48.0). Atajos que vale memorizar: `Ctrl+T` encuentra archivos, `Ctrl+R` busca en el historial, `Alt+C` cambia de directorio. También vale añadir: [fzf-tab](https://github.com/Aloxaf/fzf-tab) (~5k estrellas) reemplaza el menú de completion por defecto con fzf. Ese es un clone de terceros.

**20. [thefuck](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/thefuck)** (`Built-in · needs binary`)

Sugiere un arreglo tras un comando fallido. Teclea `fuck` o pulsa `Ctrl+G`. Necesita el paquete Python `thefuck` instalado en el sistema, y arregla typos sin reteclear.

<Notice type="warning" title="Sin mantenimiento">
nvbn/thefuck tiene ~98k estrellas pero su último push fue 2024-07-19. El plugin de Oh My Zsh sigue funcionando, pero yo no construiría hábitos alrededor. [pay-respects](https://github.com/iffse/pay-respects) es el reemplazo en Rust activamente mantenido (push 2026-10-03).
</Notice>

**21. [virtualenv](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/virtualenv)** (`Built-in · zero config`)

Indicadores de prompt y helpers para entornos virtuales de Python. Estado del entorno visible en el prompt. Para flujos Python modernos mira también los plugins `uv` / `uv-env` y `poetry-env`.

**22. [fast-syntax-highlighting](https://github.com/zdharma-continuum/fast-syntax-highlighting)** (`Third-party · clone`)

Resaltador de sintaxis alternativo con temas intercambiables y resaltadores extra. Instálalo con `git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting`. El pitch ha cambiado. Está activo (push 2026-08-31, ~1.8k estrellas), pero el `zsh-syntax-highlighting` empaquetado cerró la mayoría de la brecha de latencia en 2026. Instálalo por los temas y los resaltadores extra, no por velocidad cruda.

**23. [zsh-autocomplete](https://github.com/marlonrichert/zsh-autocomplete)** (`Third-party · clone`)

Menús de completion en tiempo real mientras tecleas (release 26.08.04, ~7k estrellas). Instálalo con `git clone --depth 1 -- https://github.com/marlonrichert/zsh-autocomplete.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autocomplete`. Advertencia: es pesado, y los conflictos con setups de `zsh-autosuggestions` / syntax-highlighting se reportan comúnmente. Revisa su README antes de añadirlo a un stack que ya funciona.

## Más plugins que valen la pena (lista bonus)

Una línea cada uno, todos integrados salvo indicación:

- **[command-not-found](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/command-not-found)**: sugiere paquetes para comandos desconocidos. Necesita la BD de la distro (pkgfile en Arch, `command-not-found` en Ubuntu) o es un no-op silencioso.
- **[jsontools](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/jsontools)**: utilidades JSON (`pp_json`, `is_json`, `urlencode_json`).
- **[urltools](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/urltools)**: codificación/decodificación de URL.
- **[encode64](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/encode64)**: codificación/decodificación Base64.
- **[colorize](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/colorize)**: resaltado de sintaxis para `cat` y `less`.
- **[alias-finder](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/alias-finder)**: te recuerda aliases más cortos cuando tecleas comandos completos. `zsh-you-should-use` es la alternativa de terceros con más funciones.
- **[copyfile](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/copyfile)** / **[copypath](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/copypath)**: copia el contenido de un archivo o la ruta actual al portapapeles.
- **[dirhistory](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dirhistory)**: navega el historial de directorios con Alt+flechas.
- **[safe-paste](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/safe-paste)**: pega snippets multilínea sin disparar ejecución a mitad del pegado. Seguro barato en máquinas de producción.
- **[per-directory-history](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/per-directory-history)**: historial con ámbito al directorio actual.
- **[magic-enter](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/magic-enter)**: corre defaults sensatos cuando pulsas enter en una línea vacía (git status, ls).
- **[timer](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/timer)**: muestra cuánto tardó el último comando.
- **[dirpersist](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dirpersist)**: mantiene una pila de directorios entre sesiones.
- **[battery](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/battery)** / **[last-working-dir](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/last-working-dir)**: info de batería de portátil en el prompt; reabre terminales en el último directorio.

<Notice type="warning" title="El plugin transfer está muerto">
El plugin `transfer` sube vía transfer.sh, que es inalcanzable desde 2026-10-04. El plugin falla en silencio. Usa servicios estilo `curl -T file oshi.at` o un fork `send` autoalojado en su lugar.
</Notice>

<Button text="Explora todos los plugins de Oh My Zsh" link="https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins" size="md" color="blue" variant="solid" icon="arrow-right" />

## Instalando plugins de terceros (manual, Homebrew)

Los integrados cubren la mayoría de necesidades ahora. Para el resto, hay dos rutas de instalación.

<Tabs>
  <Tab name="Instalación Manual">

    Esta es la ruta para cualquier cosa que no esté en `omz plugin list`:

    ```shell
    cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins
    git clone https://github.com/Aloxaf/fzf-tab
    # add fzf-tab to plugins=(...) in ~/.zshrc
    exec zsh
    ```

    Paso a paso:

    1. Clona dentro de `${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins` (no en otro sitio).
    2. Añade el nombre del plugin a `plugins=(...)`.
    3. Recarga con `exec zsh`.

    **Verifica**: `omz plugin info <nombre>` resuelve, `echo $plugins` incluye el nombre, y el primer comando del plugin funciona.

    **Modos de fallo**: clonado en el directorio equivocado así que zsh no lo encuentra, o clonado pero nunca añadido a `plugins=(...)`. Ambos se ven idénticos desde fuera: el plugin no hace nada.

  </Tab>

  <Tab name="Gestor de Paquetes">

    Homebrew funciona para un setup de zsh pelado sin Oh My Zsh:

    ```shell
    brew install zsh-autosuggestions
    brew install zsh-syntax-highlighting
    ```

    Luego hazles source en `.zshrc`:

    ```shell
    source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
    source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    ```

    Dentro de Oh My Zsh, sáltate esto y usa los plugins integrados en su lugar. La carga duplicada desde ambas rutas causa comportamiento raro.

    Gotcha de ruta: Apple Silicon usa `/opt/homebrew/share/...`, los Mac Intel usan `/usr/local/share/...`. Usa `brew --prefix` para comprobar.

  </Tab>
</Tabs>

<Notice type="warning" title="Los plugins de terceros ejecutan código de shell">
Un plugin clonado ejecuta código de shell arbitrario en cada prompt, con los privilegios de tu usuario. Lee lo que clonas, y prefiere repos activos y ampliamente usados.
</Notice>

Nota de ops: mantén `~/.zshrc` en un repo git (dotfiles). Es el único archivo que deberías estar editando. `omz update` hace `git pull` en `$ZSH`, así que editar a mano archivos bajo `~/.oh-my-zsh` acabará rompiendo las actualizaciones.

## Mantenlo rápido: rendimiento de arranque de Oh My Zsh

Demasiados plugins ralentizan el arranque de la terminal. No adivines cuál. Mídelo.

Encuentra el plugin lento con zprof:

```zsh
# top of ~/.zshrc
zmodload zsh/zprof

# bottom of ~/.zshrc
zprof | head -20
```

La salida ordena lo que cuesta cada parte de tu arranque. El culpable suele estar cerca de arriba.

Mide el arranque en frío y aísla:

```zsh
time zsh -i -c exit   # cold-start wall time
zsh -f                # no rc files; if the lag disappears, it is plugin-caused
```

**Orden de triaje** cuando el arranque se siente lento:

1. `zsh -f` para probar que es tu config, no el sistema.
2. `zprof` para nombrar la pieza cara.
3. Desactiva plugins de uno en uno y re-mide.
4. Comprueba primero los pesados habituales: `zsh-autocomplete`, `thefuck`, `command-not-found`.

10-15 plugins es un punto de partida razonable. Luego mide en vez de confiar en la heurística. Añade un plugin cada vez, úsalo una semana, borra lo que no se gana su sitio. Para benchmarking serio, `zsh-bench` de romkatv da números de arranque reproducibles.

<Notice type="warning" title="Rendimiento">
Cada plugin carga en cada prompt. Si no puedes decir qué hace un plugin por ti, quítalo. Mide con `zprof` y `time zsh -i -c exit` en vez de desactivar cosas al azar.
</Notice>

## Alternativas modernas a los plugins de Oh My Zsh

El ecosistema ZSH tiene más opciones ahora. Si algo de abajo resuelve un problema que tienes, cambia. Si no, Oh My Zsh más los dos esenciales integrados sigue siendo un buen default.

<Tabs>
  <Tab name="Motores de Prompt Modernos">

    **Starship**
    Un prompt multi-shell escrito en Rust. Funciona con zsh, bash, fish y otros, así que tu prompt sobrevive un cambio de shell. v1.26.0 (2026-06-28), ~60k estrellas, en desarrollo activo.

    Instalación:
    ```shell
    brew install starship
    # Add to .zshrc: eval "$(starship init zsh)"
    ```
    Para más puedes mirar el [setup de terminal Mac con Starship + Ghostty](/starship-ghostty-terminal/)

    **Powerlevel10k**
    Sigue siendo rápido y funcional, pero el README ahora lo dice claramente: "THE PROJECT HAS VERY LIMITED SUPPORT / NO NEW FEATURES ARE IN THE WORKS / MOST BUGS WILL GO UNFIXED / HELP REQUESTS WILL BE IGNORED". Última release v1.20.0 (2024-01). Si ya lo corres, bien. Yo no empezaría una config nueva sobre él.

    Ambos te dan compatibilidad multi-shell y prompts rápidos con renderizado asíncrono. La config vive en un archivo moderno en vez de un script de tema.

  </Tab>

  <Tab name="Gestores de Plugins">

    Gestores de plugins modernos que vale mirar:
    - **[Zinit](https://github.com/zdharma-continuum/zinit)** (v3.17.0, 2026-09-02): modo turbo y lazy loading.
    - **[Antidote](https://github.com/getantidote/antidote)**: ligero, arranque rápido, lista declarativa simple.
    - **[Sheldon](https://github.com/rossmacarthur/sheldon)**: escrito en Rust (~1.6k estrellas).

    Cambia por lazy loading, mejor manejo de dependencias que un array `plugins=(...)` plano, o condiciones de carga por plugin.

    Opinión honesta: los gestores de plugins añaden una pieza móvil. Vale la pena cuando corres 20+ plugins o quieres carga turbo. No vale para un setup de 5 plugins.

  </Tab>

  <Tab name="Historial y Completion">

    **[Atuin](https://github.com/atuinsh/atuin)**
    Historial de shell en SQLite, con sync cifrado entre máquinas y una UI de búsqueda fuzzy en Ctrl+R. v18.23.0 (2026-09-22). El repo canónico es `atuinsh/atuin` (la vieja ruta `ellie/atuin` se ha movido). Este es el reemplazo moderno de history-substring-search cuando trabajas en más de una máquina.

    **[zsh-autocomplete](https://github.com/marlonrichert/zsh-autocomplete)**
    Menús de completion en tiempo real. Cubierto arriba en Avanzados, con la advertencia de conflictos.

    Ambos te dan historial que sobrevive cambios de máquina y búsqueda que gana al substring matching. Menos momentos de "espera, ¿dónde corrí eso?".

  </Tab>
</Tabs>

<Notice type="info" title="Nota">
Oh My ZSH funciona bien para la mayoría de usuarios. Considera alternativas si el tiempo de arranque te molesta o necesitas consistencia multi-shell.
</Notice>

## Conclusión

Empieza con autosuggestions y syntax highlighting. Esos dos solos hacen una diferencia notable, y en 2026 ya no necesitan un `git clone`. Los mejores plugins de Oh My Zsh son los que sigues usando después de la primera semana.

No instales todo a la vez. Prueba un plugin, úsalo una semana y decide si ayuda. Algunos plugins suenan útiles pero acaban sin usar.

El [repositorio oficial de plugins de Oh My ZSH](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins) tiene cientos de opciones más si quieres explorar.

Si te interesa Fish Shell como alternativa a Zsh, mira [Fish Shell vs Zsh](/es/fish-shell-vs-zsh-comparacion/), [Fish Shell vs Bash vs Zsh](/es/fish-shell-vs-bash-vs-zsh-comparacion/), o [Mejores Plugins y Herramientas de Fish Shell](/es/mejores-plugins-fish-shell/). Fish tiene muchas de estas funciones integradas sin plugins.