disponible en ingles
Como desarrollador, la consola (o terminal) es una de las herramientas mas se usan a lo largo de tu carrera. Puede que sea intimidante adentrarse al mundo de las herramientas de consola pero es tambien una de las mejores experiencias que uno puede tener. En este articulo quiero mostrarles mi propia configuración para terminal. Esta basada en las 3 tecnologias que me gusta llamarles la "santísima trinidad" de la terminal: TMUX, ZSH, & Neovim.
Pre-requisitos:
Linux, MacOS, or WSL
Una fuente bonita de NerdFont
Un emulador de terminal decente (i.e: iterm2, alacritty, etc.)
El equivalente a
apt install zsh tmux neovim
en tu sistema, yo voy a usar Debian.
TMUX
La primera piedra en la experience de consola tiene que ser el multiplexor de terminal: tmux
.
En pocas palabras tmux
te permite separar tu terminal en paneles, ventanas, o sesiones. ¿Alguna vez te has conectado a traves de SSH a un servidor para correr un proceso largo y el salva pantallas te mato la sesión? Tmux te mantiene la sesion corriendo aun si la conexion SSH se corta! En cualquier momento podes re-abrir la sesion previa y es como si nada hubiese pasado.
Hay una gran comunidad que hace temas, plugins, y diferentes utilidades basadas en Tmux. Les recomiendo leer tmux cheat sheet para familiarizarse con las funcionalidad y las combinaciones de teclas. Y este es solo la punta del iceberg, hay tantas cosas que probar. Los animo a que investiguen mas por su parte y configuren todo a su gusto ya que la experiencia que viene por defecto no es muy buena.
Lo primero es crear un archivo de configuración corriendo nvim ~/.tmux.conf
y una de las mejoras que me gusta hacer inmediatamente es cambiar el indice a base 1 ya que hace mas comodo navegar pestañas con el teclado.
# start windows, sessions, and panes with 1
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on
Tmux usa una combinación de teclas para llamar las funciones, y por defecto esto siempre empieza con Ctrl + b
pero no me parece muy comodo, asi que yo cambio la combinación lider a Ctrl + Space
que se me hace mas fácil de hacer de manera constante.
# change prefix
unbind C-b
set -g prefix C-Space
bind C-Space send-prefix
Por ultimo, algo que me parece que debería ser así por defecto es que cuando abra un panel nuevo me abra la sesion en donde estaba originalmente y no en la raiz.
# split in cwd
bind '"' split-window -v -c "#{pane_current_path}"
bind '%' split-window -h -c "#{pane_current_path}"
Con esto pueden ir modificando y añadiendole a esta configuración a medida vayan usando tmux para hacer su propia configuración. Pero para poder sacarle bien el jugo a tmux
hay que aprovechar los plugins a traves de TPM (Tmux Plugin Manager). Para instalar TPM se necesita clonar el repositorio dentro de la carpeta de plugins de tmux
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
ponerlo en la lista de plugins en la configuración
set -g @plugin 'tmux-plugins/tpm'
y luego añadir estas lineas de codigo al final del archivo
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Les puedo recomendar tambien tmux-plugins/tmux-sensible
y catppuccin/tmux
para tener mejor funcionalidad y estetica. Al final la configuración les debe quedar así:
# List of plugins
set -g @plugin 'catppuccin/tmux'
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# split in cwd
bind '"' split-window -v -c "#{pane_current_path}"
bind '%' split-window -h -c "#{pane_current_path}"
# start windows, sessions, and panes with 1
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on
# change prefix
unbind C-b
set -g prefix C-Space
bind C-Space send-prefix
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Si no has corrido todavía tmux
en la consola, la nueva configuración va a cargar automaticamente. Para actualizar la configuración estando ya dentro de tmux basta con correr tmux source-file ~/.tmux.conf
para actualizar la configuración y los plugins se instalan con Shift + I
Dependiendo de la fuente que uses, habra que ajustar el tamaño de la letra, muchas configuraciónes asumen que usas 16
o mas. Si alguno de los plugins no se instala bien, siempre se puede instalar manualmente clonandolo a la carpeta de plugins como lo hicimos para instalar tpm
. Hay mas recursos en: Tmux's Awesome list.
Z Shell
zsh
(tambien conocido como ZSHell) es una alternativa a bash
(tambien conocido como "Bourne-Again SHell"). En funcionlidad básica hacen lo mismo, pero zsh
tiene mucha mas funcionalidad sobre lo que se puede hacer con bash, y al igual que TMUX, hay un gran ecosistema con plugins, temas, y mas. Cuando corras zsh
por primera vez, no va a hacer cambiado mucho, pero con los plugins adecuados zsh
puede convertirse en tu mejor amigo en la terminal. Para empezar vamos a instalar oh-my-zsh, un framework basado en zsh
que administra configuraciones, temas, plugins, y mas.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Una vez completado el instalador vamos a tener un nuevo archivo de configuración llamado .zshrc
en la carpeta raíz,
si lo editamos con nvim ~/.zshrc
podemos ver que ya tiene bastantes secciones con comentarios y varias opciones ya configuradas. Les puedo recomendar el plugin zsh-autosuggestion
que hace que la terminal te de autocomplete basado en tu historial. Para instalarlo hay que agregarlo a la lista de plugins:
plugins=(
# other plugins...
zsh-autosuggestions
)
hay que clonar el repositorio a la carpeta de plugins de oh-my-zsh
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
y por ultimo hay que cargar la nueva configuración corriendo source ~/.zshrc
.
Mi tema preferido para oh-my-zsh
es powerlevel10k, asi es, mas de nueve mil!
Viene con un instalador que te ayuda a configurar paso a paso cada opcion del tema, con muchos iconos, información y colores.
Para instalarlo hay que clonar el repositorio a la carpeta de temas de oh-my-zsh
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
hay que cambiar el tema en .zshrc
y recargar la configuración.
ZSH_THEME="powerlevel10k/powerlevel10k"
Hay mas recursos en: Zsh's Awesome List.
NeoVIM
Neovim fue lanzado en 2014 como un fork de Vim que lo extiende con soporte para Lua. Lua ya es un lenguaje establecido en el ambito del desarrollo de sistemas linux, lo que lo hace un reemplazo ideal para vimscript lo que hace mas facil para la comunidad que hace plugins. Al igual que Vim, no es facil acostumbrarse a usar Neovim, pero el cambio a trabajar principalmente con el teclado es lo mas productivo que se puede ser con un editor de texto. Inclusive, los editores modernos tienen plugins para poder usar configuraciones de teclado estilo VIM, asi que una vez que se aprende este modo de trabajo se puede traducir a otros editores facilmente.
Hay miles de opciones para configurar en este editor y hacerlo tan util como VSCode. Podemos empezar con opciones basicas como tabs o espacios e ir haciendo una configuración personalizada. Es facil paralizarse con tantas opciones que aprender, pero la comunidad tiene varias configuraciones populares para tener una buena funcionalidad e interfaz sin mucho que hacer como AstroNvim y NvChad.
Para instalar una configuración basta con clonar el repositorio a la carpeta de configuración de Neovim
git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/nvim
ó
git clone --depth 1 https://github.com/NvChad/NvChad ~/.config/nvim
Al cambiar de configuración hay que hacer los siguientes respaldos:
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
Cuando abrís nvim
la primera vez despues de cambiar la configuración se van a instalar los plugins basicos con Lazy el manejador de paquetes para Neovim que carga los plugins a medida se van necesitando.
Una vez terminada la instalación el editor se ve como un IDE completo.
Algunas cosirijillas que me hacen la vida mas facil es configurar mi editor global de git que sea nvim
:
git config —global core.editor nvim
Muchos programas usan vi
como el editor por defecto, asi que una manera de tomar un atajo y cambiarlos todos es hacerle un alias apuntando a nvim
alias vi=“nvim”
A veces hay que editar un archivo con privilegios y al correr sudo nvim
te aparece la configuración inicial sin temas ni nada. Esto es porque Neovim carga su configuración con las variables de ambiente del usuario, para pasarlas con sudo se usa la opción -E
. Se le puede hacer un alias para hacerte la vida mas facil.
alias sudo=“sudo -E”
Hay mas recursos en: Neovim's Awesome List.
Conclusión
Cuando vas a pasar mucho tiempo usando un programa es importante que tenga buena interfaz y funcionalidad. Aventurarse a la consola puede ser intimidante pero con una buena interfaz muchas cosas se vuelven digeribles.
Comenten sus recomendaciones de herramientas de consola, les agradezco de antemano.
Extra
Si queres enchular tu SSH también, te recomiendo los SSH Tips and Tricks en el blog de Carlos Becker
Top comments (0)