Cómo Activar el Resaltado de Sintaxis en Zsh
Aprende a activar el resaltado de sintaxis en ZSH para mejorar tu experiencia al programar. Cubre la instalación, la personalización de colores y los highlighters opcionales.
Actualizado Publicado 16 min de lectura

Zsh no colorea los comandos mientras escribes de forma predeterminada. El plugin zsh-syntax-highlighting lo soluciona. Resalta comandos, opciones, cadenas, rutas y errores en tiempo real, de forma similar a como Fish shell funciona de fábrica.
Con el resaltado de sintaxis, los comandos válidos aparecen en un color, los inválidos en otro, y las cadenas y rutas también tienen sus propios colores. Detectas los errores de tecleo antes de pulsar Enter.
ZSH viene preinstalado en macOS (desde Catalina). En Linux, tendrás que instalarlo primero.
Guías relacionadas de ZSH:
- Cómo Activar el Autocompletado de Comandos en ZSH
- Los 15 Mejores Plugins de Oh My ZSH que Debes Probar
- Zoxide: La Forma Más Inteligente de Navegar por tu Terminal
Qué hace zsh-syntax-highlighting
El plugin resalta tu línea de comandos mientras escribes, antes de que pulses Enter. Colorea:
- Comandos: los comandos válidos en un color, los desconocidos/inválidos en rojo (por defecto)
- Opciones: flags como
--verboseo-lareciben colores distintos - Cadenas: las cadenas con comillas simples, dobles y sin comillas se diferencian
- Rutas: las rutas de archivos existentes se resaltan (subrayadas por defecto)
- Palabras reservadas:
if,for,while,case, etc. - Globs y expansiones:
*.txt,$(command),$variable
El highlighter predeterminado (llamado main) cubre todo esto. También hay highlighters opcionales para coincidencia de paréntesis, patrones regex y avisos de usuario root (más sobre ellos abajo).
El plugin requiere ZSH 4.3.11+. Cualquier versión moderna de ZSH lo cumple.
Paso 1: Instala zsh-syntax-highlighting
Hay cuatro formas de instalarlo. Elige la que encaje con tu configuración.
Opción A: Con Oh My Zsh
Si usas Oh My Zsh:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingDespués edita ~/.zshrc y añade zsh-syntax-highlighting a tu lista de plugins. Debe ser el último plugin de la lista:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)Si todavía no tienes Oh My Zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Opción B: Instalación manual (sin Oh My Zsh)
Clona el repositorio y haz source del script:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
~/.zsh/zsh-syntax-highlightingAñade esto al final de tu ~/.zshrc:
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zshOpción C: Con Homebrew (macOS)
brew install zsh-syntax-highlightingAñade al final de tu ~/.zshrc:
source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zshOpción D: Gestor de paquetes del sistema (Linux)
El plugin está empaquetado para la mayoría de las distribuciones de Linux:
| Distro | Nombre del paquete | Comando source |
|---|---|---|
| Debian/Ubuntu | zsh-syntax-highlighting |
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
| Fedora | zsh-syntax-highlighting |
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
| Arch Linux | zsh-syntax-highlighting (AUR/community) |
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
| openSUSE | zsh-syntax-highlighting |
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
Instálalo con tu gestor de paquetes y después añade la línea source correspondiente al final de tu ~/.zshrc.
Paso 2: Haz source al final de .zshrc
Este es el error más común que comete la gente. zsh-syntax-highlighting debe cargarse después de todo lo demás en tu .zshrc: después de Oh My Zsh, después de compinit, después de otros plugins, después de los widgets personalizados.
El plugin funciona enganchándose al editor de línea de ZSH (ZLE). Si se carga antes que otras cosas que modifican la línea de comandos, esas modificaciones no dispararán el re-resaltado.
Si usas Oh My Zsh y zsh-syntax-highlighting es el último plugin de tu array plugins=(), esto se gestiona automáticamente. Para instalaciones manuales, pon la línea source al final del todo de .zshrc.
Paso 3: Recarga y prueba
Aplica los cambios:
source ~/.zshrcO abre una pestaña nueva de terminal. Después prueba:
- Escribe un comando válido como
ls. Debería aparecer coloreado (verde por defecto en muchos temas). - Escribe un comando inexistente como
asdfg. Debería aparecer en rojo. - Escribe
echo "hello". La cadena"hello"debería tener su propio color.
Si ves colores, está funcionando.
Personalizar los colores del resaltado de sintaxis
Los colores predeterminados son razonables, pero puedes sobreescribir cualquiera de ellos. Añade esto a ~/.zshrc antes de la línea source del plugin.
Ajustes de estilo habituales
typeset -A ZSH_HIGHLIGHT_STYLES
# Comandos válidos, el predeterminado es 'fg=green' en muchas configuraciones
ZSH_HIGHLIGHT_STYLES[command]='fg=blue,bold'
# Comandos desconocidos, el predeterminado es 'fg=red'
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
# Alias
ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold'
# Builtins del shell (cd, echo, export, etc.)
ZSH_HIGHLIGHT_STYLES[builtin]='fg=blue'
# Palabras reservadas del shell (if, for, while, case)
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=yellow,bold'
# Rutas de archivos existentes
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan,underline'
# Cadenas entre comillas simples
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow'
# Cadenas entre comillas dobles
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
# Opciones/flags de comandos (--verbose, -la)
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=cyan'
# Expresiones glob (*.txt, *.log)
ZSH_HIGHLIGHT_STYLES[globbing]='fg=green,bold'
# Operadores de redirección (>, >>, |)
ZSH_HIGHLIGHT_STYLES[redirection]='fg=magenta'
# Sustituciones de comando ($(echo foo))
ZSH_HIGHLIGHT_STYLES[command-substitution]='fg=cyan'
# Asignaciones (FOO=bar)
ZSH_HIGHLIGHT_STYLES[assign]='fg=green'Desactivar un resaltado concreto
Para desactivar el resaltado de un estilo en particular:
ZSH_HIGHLIGHT_STYLES[globbing]='none'Nombres de estilo disponibles
El highlighter main define estas claves de estilo (no es una lista exhaustiva, pero cubre las que más probablemente querrás personalizar):
| Nombre del estilo | Qué resalta |
|---|---|
command |
Nombres de comandos externos |
alias |
Alias |
builtin |
Builtins del shell (cd, pwd, shift) |
function |
Nombres de funciones |
reserved-word |
if, for, while, case, etc. |
unknown-token |
Comandos inválidos/desconocidos (errores) |
path |
Rutas de archivos existentes |
path_prefix |
Prefijos de rutas existentes |
single-quoted-argument |
Cadenas 'entre comillas simples' |
double-quoted-argument |
Cadenas "entre comillas dobles" |
dollar-quoted-argument |
Cadenas $'con comillas de dólar' |
single-hyphen-option |
Flags estilo -o |
double-hyphen-option |
Flags estilo --option |
globbing |
Patrones glob (*.txt) |
redirection |
<, >, >>, pipes |
comment |
Comentarios (cuando INTERACTIVE_COMMENTS está activo) |
assign |
Asignaciones de variables |
default |
Todo lo demás |
La sintaxis de colores sigue el formato zle_highlight de ZSH: fg=color,bold, bg=color, underline, standout, etc. Puedes combinar atributos con comas.
Highlighters opcionales
El highlighter main está activo por defecto. El plugin incluye varios más que puedes activar:
| Highlighter | Qué hace |
|---|---|
main |
Resaltado de comandos, opciones, cadenas y rutas (predeterminado) |
brackets |
Resalta corchetes y paréntesis coincidentes con colores |
pattern |
Resalta texto que coincide con patrones definidos por el usuario |
regexp |
Resalta texto que coincide con regexps definidas por el usuario |
cursor |
Resalta la posición del cursor |
root |
Resalta toda la línea cuando ejecutas como root (fondo rojo) |
line |
Aplica un estilo a toda la línea de comandos |
Para activar highlighters adicionales, añádelos al array ZSH_HIGHLIGHT_HIGHLIGHTERS:
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets cursor)Ejemplo de coincidencia de paréntesis
Activa el highlighter brackets y personaliza los colores:
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(brackets)
# Par de paréntesis coincidentes
ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=cyan,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=green,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=magenta,bold'
# Paréntesis sin pareja (error)
ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]='standout'Aviso de usuario root
El highlighter root hace que toda la línea de comandos sea visualmente distinta cuando has iniciado sesión como root. Una buena red de seguridad:
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(root)
ZSH_HIGHLIGHT_STYLES[root]='bg=red'Resaltado por patrones
Resalta patrones concretos que tú defines. Útil para marcar comandos arriesgados:
ZSH_HIGHLIGHT_HIGHLIGHTERS+=(pattern)
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')Esto hace que los comandos rm -rf destaquen con un fondo rojo.
Poniéndolo todo junto
Un ~/.zshrc mínimo con el resaltado de sintaxis configurado:
# Oh My Zsh
export ZSH="$HOME/.oh-my-zsh"
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
# Estilos de autocompletado
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' menu select
# Personalización del resaltado de sintaxis (antes del source del plugin)
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
ZSH_HIGHLIGHT_STYLES[command]='fg=blue,bold'
ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold'Sin Oh My Zsh:
# Sistema de autocompletado
autoload -Uz compinit && compinit
# Plugins
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
# Resaltado de sintaxis, debe ser lo ÚLTIMO
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
ZSH_HIGHLIGHT_STYLES[command]='fg=blue,bold'
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zshNota: con instalaciones manuales, los ajustes de ZSH_HIGHLIGHT_STYLES van antes de la línea source.
Limitar la longitud del resaltado
Si editas líneas de comandos muy largas y notas lag, puedes limitar la longitud máxima de línea que se resalta:
ZSH_HIGHLIGHT_MAXLENGTH=512Las líneas de más de 512 caracteres no se resaltarán. Por defecto no hay límite.
Solución de problemas
No aparecen colores: Asegúrate de que la línea source está al final del todo de .zshrc. Esta es la solución más común con diferencia. Ejecuta source ~/.zshrc o abre una terminal nueva para probar.
Plugin no encontrado (Oh My Zsh): Verifica que el directorio del plugin existe:
ls ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingSi está vacío, vuelve a clonar el plugin.
Los colores se ven mal o invisibles: El esquema de colores de tu terminal puede estar en conflicto. Por ejemplo, si tu fondo es verde oscuro y “comando válido” también es verde, no verás nada. Ajusta los estilos como se muestra en la sección de personalización, o cambia el esquema de colores de tu terminal.
El resaltado se rompe tras añadir otros plugins: Como zsh-syntax-highlighting debe cargarse el último, añadir un plugin nuevo después de él puede causar problemas. En Oh My Zsh, asegúrate de que zsh-syntax-highlighting sigue al final de tu array plugins=(). Para instalaciones manuales, mueve su línea source al final.
Escritura lenta en comandos largos: Define ZSH_HIGHLIGHT_MAXLENGTH con un valor razonable (como 512) para saltarte el resaltado en entradas muy largas.
¿Quieres resaltado de sintaxis sin plugins? Fish Shell incluye resaltado de sintaxis, autosugerencias y autocompletados completos de fábrica. Consulta la comparativa Fish Shell vs Zsh si quieres explorar esa opción.


