This is the start of a new series about maximising your terminal experience. I will write about what I think are essential packages for the CLI, a simple but super effective Vim setup and setting some sane Tmux defaults.
In this first article, I am going to list some of what I think are essential CLI packages. These are ones I use every day and could not live without. I am leaving Vim and Tmux off this list as they will get there own articles.
I spend all my time in a terminal. This is where I do all my development, hacking and note-taking. Spending so much time there I want it to work for me, providing a buttery smooth experience.
Here is a list of my top CLI packages.
1. ZSH and oh-my-zsh:
This is my chosen shell. It has way too many features to list here but here are a choice few:
- automatic cd: Just type the name of the directory
- recursive path expansion: For example “/u/lo/b” expands to “/usr/local/bin”. This is not one I use much because I lead on the tools mentioned below.
- spelling correction and approximate completion: If you make a small mistake typing a directory name, ZSH will fix it for you
- plugin and theme support: ZSH includes many different plugin frameworks. This is where
oh-my-zsh
comings in. Its a community drive framework for managing your ZSH configuration.
2. FZF
FZF is a command-line fuzzy finder. It is super fast, light and works so well with all my other tools.
3. RipGrep (rg)
RipGrep is a stupid fast replacement for grep. It does away with lots of the hard to remember flags that grep requires. By default, it respects your .gitignore
, and skips hidden files.
4. Autojump
Autojump is a super-fast way to navigate your filesystem. It learns the directories you visit most and remembers them for next time.
5. HTTPie
HTTPie is a user-friendly command line HTTP client. It has JSON support, syntax highlighting and lots more.
6. Bat
Bat is a drop-in replacement for cat
but with superpowers. It's highly configurable and supports syntax highlighting.
7. exa
exa is a modern replacement for ls
. It is highly configurable, provides better defaults.
8. twf
twf is a tree view explorer inspired by fzf.
You can find my dotfiles here. This is how I use them, how will you?
Thanks for reading 🙏
If there is anything I have missed, or if there is a better way to do something then please let me know.
Check out our software focused podcast - Salted Bytes
Top comments (2)
This is always going to be opinionated, especially when people use words like, "essential"...
I use
zsh
on Macs, but only because of Apple's bundling it to get around the GPL on bash. I thinkoh-my-zsh
is a waste of time, because I haven't found any features in it that I want and that I can't do, easily, without it. As far as I'm concerned, it's bloat.fzf
is great. I'm not sure it's essential but I do use it a lot, wrapped in something so it's not a hard dependency:ripgrep
is great. I've used ack and the-silver-searcher too, and they're all good, butrg
is the winner as far as I'm concerned. It's worth it to learngrep
though :)I'm sure
autojump
is cool, and I know people use some things that are similar, likez
or the oldCDPATH
, but they're not how my brain works and I don't like using them.httpie
looks alright, maybe the curl version of the grep -> ripgrep progressive enhancement. I don't use it, personally, but I can see the appeal.I use
bat
quite a lot, but I have a problem with it being used as a drop-in replacement forcat
. It's more a drop-in replacement forless -F
, otherwise it's one of them Useless Uses of Cat, but with wings.exa
doesn't offer me more thanls
except maybe for colourising the file permissions. I don't need another full program for that!twf
looks cool. I'll check it out, because I make my own mashups of commands withfzf
quite frequently.Thanks for your feedback. Maybe Essential is loaded. They are essential to me as they are part of my everyday toolkit.