Jeremy Nwachukwu // Field notes

6 CLI Tools Every Full-Stack Developer Needs in Their Terminal

81 views March 10, 2026

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.


© 2026 Ifeanyichukwu Jeremy Nwachukwu // Tactical Terminal