Essential terminal packages in 2020
Tags: terminal, cli, workflow
Published: 2020-06-26 08:44:51

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`](https://ohmyz.sh/) comings in. Its a community drive framework for managing your ZSH configuration.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qu4zhdzhyv3y5sm2368g.png)

## 2. FZF

[FZF](https://github.com/junegunn/fzf) is a command-line fuzzy finder. It is super fast, light and works so well with all my other tools.

![fzf](https://dev-to-uploads.s3.amazonaws.com/i/q69k9m86ffq0q7ufjwtg.png)

## 3. RipGrep (rg)

[RipGrep](https://github.com/BurntSushi/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](https://github.com/wting/autojump) is a super-fast way to navigate your filesystem. It learns the directories you visit most and remembers them for next time.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/44b496sqzhjxm9vc10yr.gif)

## 5. HTTPie

[HTTPie](https://httpie.org/) is a user-friendly command line HTTP client. It has JSON support, syntax highlighting and lots more.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wegbwuy5eclnxvw94vi1.gif)

## 6. Bat

[Bat](https://github.com/sharkdp/bat) is a drop-in replacement for `cat` but with superpowers. It's highly configurable and supports syntax highlighting.

![bat](https://dev-to-uploads.s3.amazonaws.com/i/qep52k8t5oj9188vnxlw.png)

## 7. exa

[exa](https://the.exa.website/) is a modern replacement for `ls`. It is highly configurable, provides better defaults.

![EXA](https://dev-to-uploads.s3.amazonaws.com/i/o5nsxhnbqq3y97fjhax8.png)

## 8. twf

[twf](https://github.com/wvanlint/twf) is a tree view explorer inspired by fzf.

![twf](https://dev-to-uploads.s3.amazonaws.com/i/60k07hhg7b8ew65u8luc.png)

You can find my dotfiles [here](https://github.com/jim-at-jibba/my-dots). 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](https://open.spotify.com/show/7IdlgpiDfYcOdCn57mPLvH?si=X1ArfHvqQXSOAfc1h7Y_Eg)