14.10.2020
Puedes guardar accesos directos en Zsh a tus directorios favoritos e ingresar inmediatamente desde cualquier ubicación.
Ya seas un CLI power user o recién estás comenzando en el mundillo de la terminal, este artículo te va a interesar. Vamos a agregar un par de funciones y accesos de teclado para guardar directorios y poder acceder rápidamente seleccionándolos de un menú. Si bien hay una implementación no me termina de convencer. Compará las dos y fijate cual se ajusta mejor a tu workflow.
Dependencias.
La única dependencia que vamos a utilizar es smenu para generar un lindo menú donde seleccionar los bookmarks. La instalación es muy sencilla.
Clona el repositorio
git clone https://github.com/p-gen/smenu.git
cd smenu
Configura e instala (ejecutar como root o con sudo make install
)
./build.sh && sudo make install
Bookmarks.
El funcionamiento de los bookmarks es muy simple, mediante un archivo y un par de funciones de zsh
logramos gestionar los marcadores. El archivo lo llamamos bookmarks
y el formato es
[nombre_marcador],[path_completo]
[nombre_marcador2],[path_completo2]
Por ejemplo si quisieramos agregar un marcador al directorio Descargas, el archivo bookmarks
se vería así
Descargas,/home/tu_usuario/Descargas
Configurar Zsh.
En el archivo .zshrc
agregar las siguientes líneas:
# Variable con la ubicación del archivo bookmarks
BOOKMARK_FILE=~/dots/bookmarks/bookmarks
# Funciones
# Muestra el menú (quitar la opción -N para quitar la numeración del menú)
function bookmarks() {
RES=$(cut -d "," -f1 "$BOOKMARK_FILE" | smenu -n20 -q -c -b -g -d -N)
if [ ! -z "$RES" ]
then
cd `grep "^$RES" "$BOOKMARK_FILE" | cut -d "," -f2`
fi
zle reset-prompt
}
# Agrega una entrada al archivo de bookmarks
function bookmark-this() {
echo "`basename $PWD`,$PWD" >> $BOOKMARK_FILE
echo "Bookmark added"
zle reset-prompt
}
# Bindings (atajos de teclado)
# Ctrl+n - Despliega el menú con bookmarks
zle -N bookmarks
bindkey '^n' bookmarks
# Ctrl+a - marca el directorio actual como bookmark
zle -N bookmark-this
bindkey '^a' bookmark-this
Puedes descargar el archivo completo en GitHub
Reiniciar la terminal y listo. Happy hacking!.