I use the terminal a LOT, my main editor is neovim, and all external commands are run from a terminal in a tmux session usually. The only GUI I use is a browser, everything else, I give preference to TUIs.
Being quick is part of the advantage of the terminal, I can touch type, command have usually a quick output which shortens the feedback loop of whatever I am doing and that makes me incredibly happy. Also, I’ve taken a lot of time to learn how to use the shell effectively, so it’s easy to solve issues like weird output with a dash of
sed when needed. Call this Stockholm syndrome if you want, I don’t care.
I think the first time I used fzf was together with vim as a replacement for Ctrl+P, but since I was used to it at the time, I didn’t really switch, I liked the idea, but didn’t really push it much. I started using this tool at work, which made me a lot more productive (I hate logging in to AWS console) but again, I only used that tool with
fzf and that was it.
Recently, I tried the
fish shell and liked it a lot, so I switched permanently from
oh-my-zsh without plugins. But, I had some issues, one of them was my use of
virtualenv-wrapper which is a tool for managing python virtual environment.
virtualenv-wrapper and an alias I had, I could
cd into a project and type
work to activate the project’s python environment. This stopped working for various reasons in
fish. I found an alternative using
fish. And I was delighted by it, I’m not even bothered that it takes me more key presses than before, because I’m not using external libraries to manage my virtual environments anymore.
What exactly is
From the project page:
It’s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
Still confused? Here’s some examples:
Let’s say I have a list of things, and I’d like to pick one for some reason.
$ echo -e "Bulbasaur\nCharmander\nSquirtle" Bulbasaur Charmander Squirtle
echo gives us a list of items, if we pipe them into
fzf, we now have a selector AND a fuzzy searcher.
$ echo -e "Bulbasaur\nCharmander\nSquirtle" | fzf
That’s the very basic functionality of
fzf, you pass it a list of things, you get the
fzf selector and when you select the item, it outputs it.
If you haven’t figured out yet what to do with it, stay tuned for future posts about the marvelous things you can do with