Tools to give your terminal super powers

Choosing the right tools for your daily work is essential for you to make the most of your time, especially when they are simple tools that are easy to master and fit into some command lines.
Throughout this article I will show you some of the tools I use frequently in the terminal in my day-to-day life as a web developer and how I use them. I emphasize that my focus here is only to present and demonstrate in some personal cases. I will leave the appropriate references on each topic for you to move on, download and use. And the best: all are open source and can be found on Github!
You probably already know this wonderful combination. If not, go to the ohmyzsh page now and replace bash. Zsh is a command interpreter famous for its flexibility in customization.
Ohmyzsh is just a framework for managing Zsh settings. It brings with it several plugins that can be installed to further increase your productivity, according to your needs.
The best known, and by far, the best, are zsh-syntax-highlighting and zsh-autosuggestions. But the list is huge.
He also brings with him several aliases out of the box, which are very useful for those who spend a lot of time at the terminal. Rather than:
$ git switch feature/branch
$ git status
$ git add .
$ git commit -m "message"
$ git push origin feature/branchYou just:
$ gsw feature/branch
$ gst
$ gaa
$ gcmsg "message"
$ ggpIn addition, there are still normal Unix commands, such as ls and cd. There is a lot to be explored :)
Jumpapp
Have you ever wondered how much time you spend giving alt+tab, looking for, what program you want to use?
Isn’t it annoying when you are typing and have to stop everything to use the mouse and search for the program you want to open / access?
If the answer to both questions was yes, then jumpapp is for you. With it we can open, or access, if it is already open, through the command line, something like jumpapp google-chrome. It is not very efficient if used with the terminal, so we need to create shortcuts for these commands.
This can be done in several ways. There are many linux distro that allow global shortcuts to be created natively (I’m not sure about Windows and Mac). If you don’t have such functionality natively, you can take a look at this tutorial where I teach using sxkhu to create shortcuts for spotify and adapt for the jumpapp.
Thus, the command I mentioned above can be an alt-c to open or access Chrome or an alt-v to access Vscode. Much more practical, right?
Autojump
If you work on more than one project, sometimes you have to keep moving from one directory to another several times. The normal thing would be to use “cd” to get to where you want, writing all the way, generating a waste of time. You know where you want to go, and to do that you have to type it all the way. Wouldn’t it be easier to go straight to the desired path with just one command?
This is where autojump comes. He is an intelligent “cd” that learns from his history. It understands which directories are most visited and allows you to return to them with just one command. To exemplify, let’s say that there are two folders, project_zeta and project_beta, for you to visit, regardless of where you are, just run:
$ j project_zeta # redirect to /path/to/project_zeta
$ j project_beta # redirect to /path/to/project_betaIf you type only j project, you will be redirected to the most visited project. It is perfect for me who works on more than one project, and needs to keep changing directories constantly.
There are several similar tools, like the Z, but of the ones I tested, the autojump was the one I liked the most.
Tmux
Another very famous tool among developers. It gives you the power of the “multiplexer terminal”. This means that you can split your terminal window into several windows, in addition to several other cool things that can easily be added to your workflow.
It is worth noting that “terminal emulator” is different from “terminal multiplexer”. Although both have similar functionality, the first is a terminal in itself (Terminator and Kitty are examples) and the second is a tool that gives superpowers to any terminal.
I used Terminator for a long time, but what made me migrate to tmux was the ease of customizing and adding plugins that makes the experience even better, being adaptable to any user and their needs.
There are other important concepts like “panes” and “sessions”. I believe it is really important to know tmux. If you are interested you can continue with this tutorial.
ripgrep
The name of this one is very suggestive (R.I.P. grep). It is the “killer” of the famous grep command, found on any Unix-based operating system. It works great for a heavy search, looking for hundreds and hundreds of files almost instantly.
It works very well for me when I’m developing something and I remember that I already did something similar in another project, but I don’t remember very well what file it is in. Just keep in mind a keyword, go to the project in question and execute rg keyword_ and done, it will return to search all files for the word “keyword” and that way find the file you are looking for to have the base . That way, this tool becomes essential for me.
There are some alternatives, such as grep itself, Silver search and ack. They also work perfectly for small amounts of files, but when it comes to high demand, choosing a more robust tool may be better, so feel free to test and see which one is best for you.
fzf
Finally, we have the big star. Fzf is a fuzzy-finder that mainly serves to find files quickly. It does not need dependencies, it is lightweight, it runs exclusively on the terminal, but it can be integrated with basically anything.
It is really worth taking a few minutes to look at the documentation and examples. I’m sure if using it, and its integrations, your productivity will increase A LOT!
Honorable mentions
I will list here some more tools that also help me when I’m working.
- bat: our old friend “cat”, but with highlight.
- exa: our old friend “ls”, with colors. I strongly recommend creating aliases to use it instead of ls, like this.
- diff-so-fancy: Improve the appearance of your git diffs and make them more readable.
- ncdu: Alternative to “du” to check how much the size of folders and files.
- nnn: Ideal for those who spend a lot of time in the terminal and do not want to open an “explorer” to find files.
- broot: Another way to browse files inside the terminal. A kind of fusion between fzf and nnn.
I really hope that this list can help you in some way in your day-to-day. If you made it this far, you realized that I did not delve too deeply into each item, but if you have any questions, you can speak here in the comments or take a look at my dotfiles, there I have all the configuration files for the tools mentioned above :)







