6 CLI Tools Every Full-Stack Developer Needs in Their Terminal
The terminal is the place where most developers do their jobs
This is a place that I spend a lot of time in because I’m constantly building things.
I build apps using tools like React Native, Electron, or Flutter for mobile and desktop. I also like building for the web with tools like React or Svelte, using meta-frameworks like Next.js or TanStack Start for React, and SvelteKit for Svelte.
Since I use the terminal so much, I feel like I should know some of the tools I use on a frequent basis.
zoxide
Website: https://github.com/ajeetdsouza/zoxide
Tagline: better cd
Installation
macOS (brew):
brew install zoxide
Linux (Debian):
apt install zoxide
Windows (winget):
winget install ajeetdsouza.zoxide
Why I use it
I want to talk about a common issue we all have: you want to change directory into some deep nested mess of folders to get what you are looking for, and then you get a folder wrong. Maybe you forgot the s, or maybe you added an s, but it does not matter because you are already annoyed and thinking, forget that file.
But before you do that again, just consider using zoxide.
This first tool, zoxide, uses a tracking algorithm to know the directories you access frequently and take you there. It is literally just better cd.
So instead of typing something like:
cd document/code/some
you can just do:
z some
But you may be asking, what if I want to switch to another computer where I already use cd and I do not want to remember to type z?
I understand, and the zoxide team thought about that too. By adding one line of code, you can alias cd to zoxide. Add this to your shell config:
eval "$(zoxide init --cmd cd)"
fzf
Website: https://github.com/junegunn/fzf
Tagline: Fuzzy search anything in your terminal
Installation
macOS:
brew install fzf
Linux (Debian):
sudo apt install fzf
Windows (winget):
winget install fzf
Why I use it
We talked about zoxide and how it helps you go to directories you use all the time. But what if you do not visit them very often? Maybe you want to find something that you vaguely remember the name of, but you do not remember where it is.
That is where fzf comes in.
This is a tool that lets you type something close enough to the file or folder name and fuzzy find what you are looking for. You can also use it with commands like cd.
In most shells, you can type the command and then use a keyboard shortcut.
In most shells, use the Ctrl+T or Alt+C shortcut; however, your experience may vary.
Then you can fuzzy find what you are looking for.
Config
Put the right line in your shell config:
# bashrceval "$(fzf --bash)"# zshrcsource <(fzf --zsh)# fishfzf --fish | source
This is all you have to do to get fzf working.
ripgrep
Website: https://github.com/BurntSushi/ripgrep
Tagline: A faster, smarter replacement for grep
Installation
macOS:
brew install ripgrep
Linux:
sudo apt install ripgrep
Windows:
winget install BurntSushi.ripgrep.MSVC
Why I use it
Have you ever wished grep was faster and written in Rust? Then you are looking for ripgrep.
This tool replaces a lot of the places where I would use grep. It is faster, better, and simple to use. In most cases, you just replace grep with rg.
echo "Hello the codee" | rg code
jq
Website: https://github.com/jqlang/jq
Tagline: The Swiss Army knife for JSON
Installation
macOS:
brew install jq
Linux:
sudo apt-get install jq
Windows:
winget install jqlang.jq
Why I use it
Have you ever been buried in server logs, having to parse through hundreds of lines of JSON to find an error? If so, did you do it manually? Then you need this tool.
jq is a fast JSON parser. It is not written in Rust, but it is written in C.
Its only use is not just parsing JSON. It is also great for pretty-printing JSON, and that makes it a useful tool if you work with JSON a lot.
Neovim
Website: https://github.com/neovim/neovim/tree/master
Tagline: The hyperextensible Vim-based editor
Installation
macOS:
brew install neovim
Linux:
sudo apt-get install neovim
Windows:
winget install Neovim.Neovim
Why I use it
This is the IDE I use for programming. With the fast keyboard shortcuts and minimal feel, it is really the most powerful IDE for me.
But it is not just Neovim by itself. My config is a big part of why I like it so much.
In my Neovim setup, I use a couple of extensions:
- telescope: to find things with fzf or grep
- supermaven: for tab complete
- emmet-vim: a lot of useful things when using HTML
- trouble: to see errors better
- noice: better UI
- todo-comments: to highlight specific comments that start with todo or error
- LuaSnip: for snippets when coding
- vim-tmux-navigator: for easy navigation between tmux and Neovim
- venv-selector: to select the right virtual environment when using Python
- blamer: it shows who to blame for changes in a file when using Git
- markdown-preview: to see markdown in the same way you see it on GitHub
- catppuccin: my current theme
Tmux
Website: https://github.com/tmux/tmux
Tagline: The terminal multiplexer that boosts productivity
Installation
macOS:
brew install tmux
Linux (Debian/Ubuntu):
sudo apt install tmux
Windows (winget):
winget install tmux
Setup
Create a basic config in ~/.tmux.conf:
# Enable mouse supportset -g mouse on# Split panes with | and -bind | split-window -hbind - split-window -v
Why I use it
Tmux is a terminal multiplexer that lets you split your terminal into panes and windows. Combined with Neovim and other CLI tools, it creates an amazing coding workflow and keeps me ultra-productive.
Conclusion
These are some of the terminal tools I use a lot, and if you spend a lot of time in the terminal too, I think they are worth checking out.
All my config are at git repo https://github.com/Jemo69/dot-file
If there are any tools that you want me to know about, you can give me a DM on Twitter/X at @JemoLife0213 or click here: https://x.com/JemoLife0213
And remember: do the hard thing first.