I am fond of the Unix philosophy that emphasizes building programs that have a singular purpose and executing it well. There are many tools available that can enhance the programming process and make it more enjoyable. I am using these five tools for a while and have significantly improved my shell experience. Here are the five tools:
This tool takes the standard "cd" command to the next level by adding fuzzy search and directory switching. It keeps track of all the directories you have used and maintains an index, allowing you to switch to any directory by passing the search word as a parameter. Here is the demo of changing directory using z:
This is a fuzzy search history tool that can be used anywhere. Once installed, it binds to a recursive search of history, making it easier to search history than the default recursive search within the shell. You can pipe other outputs to fzf, such as "less" or "more" tools. Here is the demo of history search using fzf:
This is an auto-environment loader that is specific to directories. If you have a bunch of environment variables that you need to set for a project, direnv does it for you. It executes ".envrc" within your folder and resets the variable to the previous value once you are out of the directory. Here is the demo to use direnv:
This is a fast full-text search tool that comes up with search results and line numbers in the files within a folder. Here is the search demo using ag :
This is a screen recorder for the shell that doesn't require additional screen recording tools. You can embed GIFs from terminalizer like any other image. All the demo gifs in this post are generated using terminalizer. Here is the demo to record and render using terminalizer:
In summary, I hope this serves as an introduction to these tools and provides insight into their potential usage. I hope they can significantly improve your shell experience and add more fun.