So recently, I spent a few days trying to recreate my usual environment on a new laptop. Many of the tools I use became so natural that I forgot that they weren't there in the first place. After a couple of days of intense memory exercises, I finally managed to get everything together. At first, this post was a memo to save my future self from more brain push-ups. But then I thought that it could be helpful to someone else. Behold, community, this is the list of the tools I use daily:
1. Oh My Zsh
zsh shell because it's
the default option on macOS really powerful. But there is a way to take it to the next level —
oh-my-zsh. It comes with a bunch of handy commands and a powerful way to configure and extend your shell with plugins. There are also themes if you want a different shell flavor.
I really like how it looks, but I also like how fast it is. P10K can magically skip a lag between you hitting an
enter key and a prompt appearing on the screen. It also works during shell startup, e.g., if it suffers from plugin bloat. Speaking of which, powerlevel10k natively integrates with many of them. For example, it can detect your current Python virtual environment or AWS user and display them in the shell prompt.
A must-have if you use environment variables a lot. You export them in a
.envrc file and place it in the root directory of your project. Then those variables are automatically loaded upon entering that directory. Direnv also provides handy functions for
.envrc file, and it can load envs from
Command-line fuzzy finder. I use it mainly with reverse search by command history. Outputs a list of results and has an extended syntax for searching.
Pyenv lets you install different versions of python on your system simultaneously, without breaking a thing. You can switch between any of them in one command. You can also bind a specific version to a directory, which will activate every time you enter it. There is an extension that adds support for virtual environments.
Lazygit is a terminal UI for git. It's less wordy than the CLI and not as bloated as a GUI tool or an IDE plugin. I like it because it has most of the information I need on a single screen and provides many shortcuts for frequently used commands. Here is a video that shows more interesting things Lazygit can do.
8. z script
A simple script that gathers statistics on your filesystem tree "movements" and uses it to teleport you to the most "frecent" directories. For example, if you frequently navigate to your project directory cd
~/work/company/myapp, you can use
z myapp to jump right in.
And that wraps things up. If you know other amazing tools that help you be more productive, share them in the comments!