Instalación de oh-my-zsh

Mejorar tu terminal de zsh con temas y plugins


Uno de los frameworks más populares de zsh es Oh-My-Zsh!, el cuál podremos instalar para dotar a nuestro sistema de funcionalidades muy interesantes que nos harán más cómodo su uso.

Instalación de oh-my-zsh

Para instalarlo necesitaremos curl y git, por lo que instalamos dichos requisitos previamente:

$ sudo apt install git curl -y

Una vez los tengamos instalados, escribimos el comando siguiente, el cuál descargará el script oficial de instalación de Oh-my-zsh!:

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

Cloning Oh My Zsh...
Cloning into '/home/manz/.oh-my-zsh'...

Es posible que al finalizar la instalación nos pregunte si queremos sobreescribir la configuración de ~/.zshrc o si queremos establecer zsh como shell por defecto, si corresponde. Una vez terminado el proceso, debería aparecernos algo como lo siguiente:

Instalación de Oh My Zsh (framework de ZSH)

Podemos ver que el prompt de la shell ya ha cambiado a algo más bonito y amigable, haciendo uso de colores. Sin embargo, puede resultarnos demasiado simple. Veamos como podemos cambiarlo por otro theme.

Cambiar el tema de zsh

Una de las características más llamativas de zsh es la posibilidad de cambiar el theme de la terminal, a uno más vistoso y llamativo. La shell zsh incorpora de serie varios themes para la terminal que podemos utilizar según nuestros gustos.

Por ejemplo, uno de mis preferidos es agnoster. Para seleccionar este tema, simplemente tenemos que editar el archivo de configuración ~/.zshrc y buscar la línea siguiente:

ZSH_THEME="robbyrussell"

El tema robbyrussell es el que viene por defecto, pero podemos cambiarlo por agnoster o por cualquier otro de la lista de themes de zsh. De hecho, incluso podemos indicar random como tema, y descomentar una línea que aparece más abajo, que nos activar un tema aleatorio de esa lista, de forma aleatoria cada vez que abramos una terminal:

ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" "xiong-chiamiov" )

Si todo ha ido bien al cambiar el tema por agnoster, al guardar el fichero de configuración y abrir una nueva terminal ya debería aparecernos la nueva interfaz del intérprete de comandos:

Theme Agnoster de Oh My Zsh

Ten en cuenta que es posible que algunos carácteres se nos muestren incorrectamente (como cuadrados o similar). Esto suele ocurrir cuando usamos una tipografía que no es capaz de mostrar los carácteres especiales que necesitamos. Para solucionarlo, te recomendamos instalar y utilizar una tipografía de NerdFonts.

Error 12: character not in range

Es muy común, que instalando los plugins, gestionando los themes y personalizando los apartados anteriores, te puedas encontrar de repente con que al iniciar la terminal, nos aparece un error similar al siguiente:

(anon):12: character not in range

Este problema ocurre por conflictos en la lectura de carácteres Unicode, ya que es posible que esté intentando leer alguno que no exista en el conjunto de carácteres instalados (es muy común en Docker, donde no tienes los locales preinstalados). Para resolverlo, simplemente instala los paquetes de localización escribiendo sudo apt install locales-all y reinicia la sesión de usuario.

Autocompletado y sugerencias

Existen una serie de plugins creados por la comunidad de zsh muy interesantes, que podemos instalar en nuestra terminal para ampliar sus capacidades y hacerla mucho más cómoda.

PluginDescripción
zsh-syntax-highlightingResaltado de sintaxis para comandos, basado en fish.
zsh-autosuggestionsSugerencias basadas en el historial, basado en fish.
zsh-completionsAutocompletado mejorado para comandos.

El primero de ellos, zsh-syntax-highlighting, es el resaltado de color de comandos, el cuál viene de una característica que incorporaba inicialmente el intérprete de comandos fish. Al escribir un comando en la terminal nos aparecerá en rojo si no está instalado en el sistema o en verde si está disponible para utilizar. De esta forma sabremos, a medida que vamos escribiendo los comandos, si los estamos escribiendo bien (o por lo contrario, tenemos erratas) o si no se encuentra instalado un comando, por ejemplo, incluso antes de pulsar la tecla ENTER.

El segundo, zsh-autosuggestions, es un plugin que a medida que escribimos un comando, nos sugiere y recuerda comandos escritos anteriormente (que residen en el historial de la terminal) en color gris de fondo, para que sea más sencillo para nosotros identificarlos. Pulsando le decimos a zsh que lo recupere íntegro, lo que puede ser útil para comandos largos.

Autocompletado y sugerencias en zsh

Por último, el plugin zsh-completions nos permite activar ciertas características interesantes de autocompletado en zsh, como por ejemplo atajos al pulsar TAB en git, composer de PHP, nano, el firewall ufw, node y muchos otros.

Para instalar estos plugins, lo que tendremos que hacer es simplemente copiar y pegar los siguientes comandos. En ellos, lo que estamos haciendo es descargarnos (clonar el repositorio del plugin de git) y guardándolo en nuestra carpeta personal, en un apartado de plugins personalizados de oh-my-zsh. Podemos hacerlo todo con estos tres comandos:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions

Una vez hecho, editamos el fichero ~/.zshrc y bajamos hasta la linea donde se cargan los plugins, generalmente con esta configuración plugins=(git). Ampliamos esa lista de plugins, escribiendo lo siguiente:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting zsh-completions)
autoload -U compinit && compinit

Con esto, cargaremos esos 4 plugins y tendremos listo estas funcionalidades adicionales desde que volvamos a abrir una nueva terminal.

Es posible que el plugin de autocompletado no aplica el color adecuado. Puedes solucionarlo editando el archivo ~/.zshrc y añadiendo la linea export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=5". Esto permitirá cambiar el color del autocompletado desde el historial, donde el 5 es el color (en este caso color morado).

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev