Cuando necesitas buscar un archivo en la terminal, normalmente, utilizas herramientas como find
o fd
, sin embargo, en ocasiones, las búsquedas se complican y es necesario utilizar filtros para ayudarte con la ingente cantidad de resultados que obtienes. Una de esas herramientas es precisamente grep
. Sin embargo, el uso de grep
es limitado, en tanto en cuanto, se trata de una ayuda estática. ¿Como poder filtrar de forma dinámica los resultados? Para esto tienes un tipo de herramientas denominadas Fuzzy Finder
, que te permiten realizar filtros en tiempo real, y además utilizando la lógica difusa, lo que te ayudará enormemente para localizar de forma más rápido y precisa lo que andas buscando. Así en este artículo, quiero mostrarte una fuzzy finder espectacular como es skim.
Sustituye grep por skim en Linux
¿Que es skim?
Skim es lo que se conoce como un fuzzy finder de propósito general, un filtro dinámico, que te ayuda en tus búsquedas proporcionándote una búsqueda interactiva.
Instalación
skim se encuentra en diferentes repositorios, en concreto, en Arch Linux, lo encuentras en los repositorios oficiales, con lo que la instalación es tan sencilla como ejecutar el siguiente comando,
sudo pacman -S skim
En el caso de que no lo encuentres en los repositorios oficiales, siempre lo puedes instalar directamente con Cargo, dado que se trata de una herramienta implementada en Rust. En este sentido, puedes ejecuta el siguiente comando,
cargo install skim
Indicarte que skim está compuesto por tres piezas,
sk
el ejecutablesk-tmux
, un script para lanzarsk
en un panel detmux
skim.vim
un complemento para tener soporte deskim
dentro de Vim.
Usos de skim
En general, skim, tiene dos usos, como filtro general, exactamente como grep+
o como una interfaz interactiva que te va a permitir invocar comandos.
Como filtro
En el caso de utilizarlo como filtro, puedes hacerlo o bien directamente invocando skim, como puedes ver en el siguiente comando,
sk
O la otra opción que tiene es utilizarlo para filtrar los resultados de otro comando a través de un pipe |
, como por ejemplo en el siguiente comando, con el que te permite enviar a Neovim, los resultados seleccionados, teniendo en cuenta que con la opción -m
puedes seleccionar varios,
nvim $(find . -name "*.rs" | sk -m
Como interfaz interactiva
El segundo de los usos que le puedes dar a skim es utilizarlo como interfaz interactiva para invocar otros comandos de forma dinámica. En general, en estos casos se utiliza en combinación con grep
, ack
, ag
o rg
. Algunos ejemplos, podrían ser los siguientes,
# works with grep
sk --ansi -i -c 'grep -rI --color=always --line-number "{}" .'
# works with ack
sk --ansi -i -c 'ack --color "{}"'
# works with ag
sk --ansi -i -c 'ag --color "{}"'
# works with rg
sk --ansi -i -c 'rg --color=always --line-number "{}"'
El vídeo
A continuación puedes encontrar lo mismo que te he contado hasta aquí pero en formato vídeo,
Más información,