Te estás perdiendo una mejor experiencia con el terminal de Mac

Cuando dejé el mundo de Linux e hice el cambio a tiempo completo a OS X hace poco más de un año, lo que más eché de menos fue la robusta comunidad y la plétora de opciones que rodean las personalizaciones, ajustes y personalizaciones del sistema operativo y la estación de trabajo. Lo que sigue es una guía que describe la búsqueda para construir mi shell de OS X perfecto – una experiencia de línea de comandos tanto funcional como hermosa, sin sacrificar una por la otra. Espero que mis pasos ahorren a algunos viajeros con ideas afines algo de tiempo y frustración en su viaje hacia una experiencia de terminal perfecta.

Milla 1: Elegir una aplicación Shell

credit: hyper.is

El primer paso en este viaje, y uno importante, es elegir una aplicación de emulación de terminal. Dentro del mundo de OS X, hay dos jugadores dominantes: iTerm, y Hyper.

Este artículo no pretende ser una revisión de la aplicación, por lo que no voy a profundizar en los detalles sobre la funcionalidad de cualquiera de las opciones o el uso avanzado, pero voy a decir lo siguiente:

En general, iTerm va a ser la opción más performante de los dos. iTerm posee una gama verdaderamente increíble de opciones, accesos directos y capacidades. Si usted está haciendo un trabajo pesado en la línea de comandos de Mac, utilizando regularmente tmux, o requiere una configuración más avanzada, esto probablemente será la mejor opción. Encuentra iTerm aquí.

Hyper es un jugador más nuevo en este campo, y a pesar de tener menos funcionalidad que iTerm, es indiscutiblemente la experiencia de terminal más hermosa. Esto no quiere decir que iTerm sea feo, pero el estilo de Hyper es simplemente…bonito.

Hyper está construido sobre tecnologías web (HTML, CSS, JS), y tiene una robusta colección de temas, una diversa biblioteca de plugins fácilmente instalables, y las continuas contribuciones de los usuarios hacen que sea una opción divertida e interesante. El equipo de Hyper acaba de lanzar la versión 2 aumentando la velocidad, añadiendo útiles mejoras de UX, simplificando aún más la instalación de plugins, y más. Echa un vistazo a Hyper aquí.

Cualquiera de las dos opciones aquí va a ser una buena opción. Ambas opciones pueden ser configuradas para crear una experiencia de terminal hermosa y altamente funcional. Yo recomendaría probar ambas – yo mantengo ambas instaladas, usando cada una para diferentes propósitos.

Nota: si no te gusta ninguna de las opciones anteriores, o prefieres quedarte con las aplicaciones nativas, la aplicación terminal.que viene con OS X funcionará bien para la mayoría o todo lo que vamos a cubrir en el resto del artículo.

Milla 2: Instalar su Shell Unix

Después de determinar qué aplicación de terminal va a utilizar, el siguiente paso es elegir un shell unix. Este es un prerrequisito necesario para la mayor parte de lo que seguirá.

Hay tres opciones principales en este departamento: Bash (OS X por defecto), Zsh, y Fish. Cada opción tiene diferentes ventajas y desventajas, pero para los propósitos de este artículo, vamos a trabajar con zsh.

Z shell, o zsh, ha existido desde 1990, y tiene un gran número de seguidores y una diversa gama de plugins, guías y colaboradores. Algunas de las ventajas de zsh incluyen: mejoras en las terminaciones, historial de comandos, globbing, atajos, manejo de variables, y muchas otras. Merece la pena explorar cada uno de estos elementos y aprender sobre ellos en otra ocasión.

Instalación de zsh:

Zsh viene con OS X, sin embargo, es una versión antigua. I recommend installing the latest version using Homebrew, the Mac package manager.

If you have not heard of Homebrew, or do not have it installed, you can find it here.

  • To install zsh using Homebrew, enter the following into your terminal:

brew install zsh zsh-completions

  • Verify installation by entering the following:

zsh --version

expected result: 5.1.1 or newer.

  • Make zsh your system’s default shell:

chsh -s $(which zsh)

  • Verify that it worked:

echo $SHELL

expected result: /bin/zsh

If you get hung up anywhere during this process, or need additional help, check this for more information and a more detailed install guide.

After installing zsh, the first time zsh is ran, it will prompt you with a series of questions concerning configuration. Siga las preguntas hasta el final, haciendo los cambios que desee. Sin embargo, no es necesario realizar ningún cambio – los valores predeterminados funcionarán bien.

Milla 3: Elegir un Framework

credit: oh-my-zsh

Después de instalar zsh, se abre todo un nuevo mundo de frameworks, plugins y temas. Mucho más de lo que se puede cubrir dentro de este artículo. Para los propósitos de este artículo, usaremos oh-my-zsh de Robby Russel como nuestro framework. Es fácil de instalar, tiene un conjunto de características robustas, y es generalmente indulgente en la usabilidad.

Si oh-my-zsh no es su taza de té, un marco similar como Prezto funcionará muy bien en su lugar. Alternativamente, si prefieres una alternativa más ligera, puedes quedarte sólo con un gestor de plugins, como Antigen, o correr sin un framework por completo. Estas decisiones son totalmente de usted, y le animo a jugar con diferentes configuraciones, marcos, plugins, y los cambios para determinar cuál se ajusta a su flujo de trabajo y necesidades mejor.

Instalación de oh-my-zsh:

Diríjase al repositorio oh-my-zsh en Github – aquí.

Siga las instrucciones básicas de instalación en el repositorio, o vea lo siguiente:

Instale a través de curl:

En su terminal, ejecute:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Lo anterior clonará e instalará oh-my-zsh. Una vez completado, estás listo para empezar a usarlo.

Configuración de oh-my-zsh:

Los plugins de Zsh pueden añadir todo tipo de soluciones útiles para el flujo de trabajo, ajustes divertidos o añadir funcionalidades importantes. Aquí hay algunos para empezar:

zsh-nvm – plugin de zsh para el gestor de versiones de Node (asumiendo que usas Node.js). Descárgalo aquí.

zsh-syntax-highlighting o fast-syntax-highlighting – añade resaltado de sintaxis en tiempo real a los comandos mientras se escriben en la terminal – muy recomendable. Encuéntralo aquí.

git – atajos y soluciones para los usuarios de git. Se envía con oh-my-zsh.

Hay muchos, muchos más plugins por ahí. Oh-my-zsh viene con una larga lista de ellos, también (ver aquí). Una vez más, esto depende de la configuración personal – invierta tiempo en decidir cuál funcionará mejor para usted.

Instalación del plugin:

Esta parte de la guía nos lleva a una pieza muy importante en el proceso de configuración de zsh: el archivo de configuración de zsh, .zshrc .

Su archivo .zshrc debería haberse generado la primera vez que ejecutó zsh y/o durante la instalación de oh-my-zsh. Puedes encontrarlo entre los archivos ocultos de tu directorio raíz.

Nota: para habilitar la visualización de archivos ocultos en tu directorio raíz, escribe esto en tu terminal: defaults write com.apple.finder AppleShowAllFiles YES

El archivo .zshrc es donde va a tener lugar la mayor parte de nuestra configuración del prompt. Oh-my-zsh habrá generado una configuración por defecto, con campos para el tema, los plugins, los alias, y más.

Instalar un nuevo plugin es un proceso sencillo. Si se trata de un plugin que se envía con oh-my-zsh, simplemente navegue hasta la parte de «plugins» de su archivo .zshrc y escriba su nombre entre los paréntesis. Recargue su terminal escribiendo zsh y debería ser funcional.

Para los plugins de terceros, recomiendo seguir las instrucciones de instalación dentro del repositorio del plugin. Sin embargo, el proceso de instalación para la mayoría de los plugins de terceros es bastante sencillo, y debe ir como sigue:

  1. Clonar el plugin y mover los archivos clonados en su carpeta /custom dentro de la instalación de oh-my-zsh, que se encuentra en su directorio de inicio.
  2. Dentro de su archivo .zshrc, añada el nombre del plugin dentro de los paréntesis en el campo ‘plugins’, como hicimos anteriormente.
  3. Recargue zsh, y debería estar listo para usarse.

Note: if you run into any hangups in this process, please refer to the oh-my-zsh repository, or the third party plugin’s repository. Most of your troubleshooting needs should be addressed there. Additionally, there is a large community surrounding the use of these tools- if there is something you can’t immediately find in the repositories, a quick google search will likely turn up a long list of people asking and solving the same questions you have.

Mile 4: Spaceship Prompt Installation

credit: spaceship prompt

Now that we have installed zsh, a framework, and our plugins, we can now get to work configuring our command line via a theme/custom prompt.

Tu prompt de línea de comandos puede ser lo que quieras que sea- mínimo, verboso, informativo, bonito, pragmático, o todo lo anterior. Para nuestros propósitos, he elegido un gran tema de prompt de zsh, Spaceship. Es la mejor combinación de cada uno de los atributos anteriores que he encontrado hasta ahora.

El repositorio github de Spaceship Prompt se puede encontrar aquí.

Instalación de Spaceship prompt:

Clonar el repositorio:

git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"

Symlink spaceship.zsh-theme a tu directorio de temas personalizados oh-my-zsh:

ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

Establezca ZSH_THEME="spaceship" en su .zshrc ‘s sección «theme».

Personalización del prompt de Spaceship:

Ahora que tienes tu prompt instalado, hay una larga lista de personalizaciones y ajustes que se pueden hacer para adaptarse a tu flujo de trabajo o estilo. Su repositorio tiene un gran conjunto de documentos que le mostrará algunas de las posibilidades. Spend some time viewing the examples, or leave it as-is — the defaults are great.

My personal prompt is configured to display some custom icons and information:

Spaceship prompt in iTerm2

The above should give you an idea of some of the cool possibilities that you can create with Spaceship. To get your prompt looking like mine, a few steps must be followed:

The font I’m using iTerm is Monoid Nerd Font . In Hyper I am using nerd fonts’ PowerlineSymbols and mononoki Nerd Font Mono . Use whichever fonts you personally like, however— a nerd font is required to properly use Spaceship prompt. Las fuentes nerd están especialmente parcheadas para incluir todos los grandes símbolos/glifos discutidos en este artículo.

Encuentra las fuentes nerd aquí y aquí.

  1. Para instalar las fuentes nerd:
  • Instalación manual – descarga/clona los archivos de las fuentes. El repositorio de fuentes nerd tendrá instrucciones detalladas sobre la descarga de todo el paquete o de fuentes individuales.
  • Navega en el directorio de la(s) fuente(s) recién descargada(s). Busque los archivos de fuentes reales, que suelen terminar en .ttf – al mismo tiempo, abra la aplicación nativa ‘Font Book’ que viene con OS X.
  • Arrastre los archivos de fuentes ( .ttf ) directamente a la lista de fuentes de Font Book. Su cursor debería cambiar a un símbolo verde ‘+’ al arrastrarlo. Suelta el cursor, y tus fuentes se instalarán.
    • 3. Las opciones adicionales de instalación de fuentes se detallan en el repositorio Github de nerd fonts, e incluyen la instalación a través de Homebrew, el script de instalación, y la descarga ad hoc en curl. Cada una tiene sus ventajas/precauciones- recomiendo leer el repositorio para decidir cuál es la más fácil/mejor para tus necesidades.

      4. Después de descargar e instalar tus fuentes nerd, abre tu emulador de terminal (iTerm o Hyper), y presiona Command + , . Esto abrirá sus preferencias de usuario. En iTerm, esto vendrá en forma de una ventana de diálogo GUI. En Hyper, esto abrirá su archivo de configuración Hyper, .hyper.js en su editor de texto predeterminado.

      • En iTerm, las fuentes se pueden establecer dentro de los ‘Perfiles’ -> {nombre del perfil} > sección ‘Texto’. Dentro de ‘Texto’, navegue hasta la parte de ‘Fuente’. Cambia la fuente principal por tu nueva fuente nerd, y marca la casilla ‘Usar una fuente diferente para el texto no ASCII’. Marca esta casilla, así como la de «Usar ligaduras». Establezca la fuente secundaria a una fuente nerd, también. See below:

      Your configuration should be similar.

      In Hyper, within your .hyper.js configuration file in your text editor, navigate to the fontFamily tag. Replace the defaults with the names of your new nerd font(s).

      Note: if you are not a programmer, be careful with your use of quotation marks. Multiple word font names with spaces will need their own surrounding quotes.

      Your configuration should look something like the below, specifically, the portion surrounded in the blue box (you may disregard the other fields):

      pictured: vs code with monoid nerd font, material darker syntax theme.

      Now that you have Spaceship prompt and nerd fonts installed and selected within your terminal, you can begin customizing the prompt:

  1. Within the nerd fonts website, roughly two-thirds of the way down, there is a scrollable field that displays glyphs/icons and their corresponding codes. Any of these icons can be used in your prompt using Spaceship and a nerd font. Scroll through and find one or two that you like.

Note: the four-character glyph/icon codes must be preceded by \u , as shown below.

  1. Dentro de tu archivo .zshrc, pega lo siguiente después de la sección «theme»:
SPACESHIP_PROMPT_ADD_NEWLINE=”true”
SPACESHIP_CHAR_SYMBOL=” \uf0e7"
SPACESHIP_CHAR_PREFIX=”\uf296"
SPACESHIP_CHAR_SUFFIX=(" ")
SPACESHIP_CHAR_COLOR_SUCCESS=”yellow”
SPACESHIP_PROMPT_DEFAULT_PREFIX=”$USER”
SPACESHIP_PROMPT_FIRST_PREFIX_SHOW=”true”
SPACESHIP_USER_SHOW=”true”

Lo anterior hará que tu prompt se vea idéntico al mío, asumiendo que tienes una fuente nerd instalada. Si quieres cambiar los iconos en el prompt, los campos SPACESHIP_CHAR_SYMBOL= y SPACESHIP_CHAR_PREFIX= son donde introducirás los códigos de los iconos de las fuentes nerd que he señalado anteriormente. Puedes añadir logotipos de lenguajes de programación, frameworks y librerías. También encontrarás glifos, flechas, rayos, meteoros… para los obsesionados con la personalización, hay mucho con lo que trabajar.

4. Otro elemento que puede ser de interés dentro de mi terminal son los iconos de carpetas/archivos de colores. I’m using a ruby gem called «colorls»- which you can find here.

Colorls installation:

Colorls, once installed, adds some glyphs to your ls command, and can be configured to show informative reports, realign and reconfigure the output of ls, among many other options. Follow the installation instructions within the repository.

To get colorls to print every time the ls command is used, you will need to use an alias within your .zshrc file.

To configure this, head into your .zshrc file, and scroll to the very bottom.

Paste the following:

alias ls=’colorls — light — sort-dirs — report’
alias lc=’colorls — tree — light’

This will get your ls looking identical to mine. Additionally, inputting the lc command will print a tree-view version of ls. Como advertencia, sólo recomiendo hacer esto en directorios pequeños – puede volverse lento mientras se indexan carpetas más grandes.

Notas finales sobre mi Prompt:

En iTerm, estoy usando un esquema de colores llamado termnk – puedes encontrarlo aquí.

Además, se puede encontrar una larga lista de temas de color de iTerm aquí.

Para Hyper, mi configuración es la siguiente:

plugins: ,

Milla 5: Conclusión: Consejos, recursos y hacia dónde ir desde aquí

En este punto, deberías tener una terminal zsh en funcionamiento con un gran comienzo en tu propia configuración personalizada. Después de ver mi configuración personal, y potencialmente emular partes de ella, ahora debe tener una buena idea de algunas de las hermosas e interminables opciones disponibles para el shell zsh en Mac. Esto, sin embargo, es sólo el comienzo del viaje. Esta guía no pretende ser exhaustiva – hay muchas más posibilidades y recursos increíbles para ajustar tu shell y tu flujo de trabajo a lo que quieras que parezca, se sienta y funcione. Esta parte final está dedicada a esbozar algunos grandes recursos para continuar su aprendizaje y seguir explorando desde aquí.

Lectura recomendada:

Hay muchos más plugins de zsh increíbles que pueden ayudar con la búsqueda, grepping, la adición de protectores de pantalla a su terminal como pipes.sh, o indicaciones informativas de carga como Neofetch. Te recomiendo que leas y encuentres más plugins que se adapten a tu flujo de trabajo.

Similarmente, un compendio de recursos útiles relacionados con todo lo relacionado con zsh.

Una comunidad centrada en el enriquecimiento/personalización de todo lo relacionado con Unix. Mientras que Linux es la fuerza dominante aquí, una búsqueda rápida de ‘OSX’ le dará algunos ejemplos inspiradores.

Como se ha señalado, una lista curada de marcos de Terminal, extensiones y recursos. Esta es una gran referencia – muy recomendable.

Una aplicación de prueba interactiva para previsualizar algunas de las mejores fuentes de programación disponibles. La mayoría/todas son gratuitas, y tienen una versión parcheada para descargar desde nerd fonts.

La lista definitiva de plugins de Hyper themes &. Si decides usar Hyper, esta debería ser una de tus primeras paradas.

Conclusión:

Sigue explorando y trabajando en tu experiencia de terminal. Entusiasmarse con el aspecto y la sensación de su línea de comandos le va a ayudar a entusiasmarse más con el aprendizaje de su uso, con la programación (si es el caso), y es simplemente divertido.

A medida que más usuarios entran en el mundo de la personalización de la línea de comandos, más opciones e innovaciones están seguros de seguir. A pesar de que Linux generalmente tiene más soporte para este tipo de personalización, espero que esto haya abierto los ojos de algunos lectores a algunas de las impresionantes configuraciones de terminal posibles en OS X.

Vea mi otro trabajo que cubre la personalización del icono de Mac & dock aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.