open source

Crear bookmarks en Zsh.

por Lógico (@logico_ar)

PUBLICADO 19:19
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!.


Comentarios desactivados en la versión móvil.