The world today is a fast paced, incredibly connected, and demanding place to live in. This is even more prevalent in the software engineering profession. Tight deadlines, difficult production outages, and a frequently changing technological landscape, are all things a typical software developer will face in the workplace. Did you know that every second Amazon sells approximately $4,722 worth of product? That means in an hour of downtime, Amazon can lose somewhere near $17 million. That's an insane number to think about.
Seconds count and in a profession where the cognitive load is high, simplifying and speeding up parts of your day can help you focus more on the things that matter in a more efficient way. In this article I’m going to share some Zsh terminal plugins I love and use on a day-to-day basis, I hope they can help improve your daily functions and be more efficient in your work.
I don’t have a lot of experience in the Linux and Windows ecosystems. While I have not tried this myself, there is a tutorial on how to combine Hyper with zsh and Windows to create a similar experience.
My daily driver is a Macbook Pro with oh-my-zsh installed, so this article is heavily biased towards that ecosystem. If you use macOS, the oh-my-zsh install docs are great and easy to follow.
The oh-my-zsh git plugin is a personal favorite of mine. I’m someone who prefers to do most of his git commands via a terminal (since I believe that, in most cases, it’s faster than a UI), and having these predefined aliases, improves my development time drastically. Some simple commands like
“ga .” are an alias for
“git add .” and additionally
“gcmsg “ is an alias for
“git commit -m”. These are both very simple aliases, but just think about how often, during a day, you’re making these sorts of commands. All of that time eventually adds up.
A personal favorite of mine for new branches is
“gpsup”, which is an alias for
“git push –set-upstream origin $(git_current_branch)", otherwise known as the command everyone copypastes when first trying to push a new branch.
Now, homebrew isn’t really a zsh plugin, but more a package manager for your command line. Regardless, it’s a necessity for installing and updating commands available to your mac. Homebrew is a very quick install and the majority of READMEs you’ll run into will likely have some homebrew commands you can run to quickly update or install packages on your computer.
On the topic of package managers, why not discuss a plugin manager? Antigen is a plugin manager for zsh, which will automatically install all of the plugins you’ve listed in your terminal and help you keep them in sync. The best part of using a plugin manager like this one is that it makes your .zshrc file easier to manage and keep track of. Say you update your computer, or get a new one. You can simply install a few things and bring over a backup of your .zshrc file, your plugin manager will do the rest. Gone are the days when you had to spend hours setting up your computer, trying to bring it as close as to how you remembered it.
In my opinion, this is the crown jewel of zsh plugins, out of all I have encountered. It’s a directory navigation tool, but for every directory you’ve visited in the past. This plugin allows you to navigate to any directory you’ve been to before, based on partial matching and the frequency of visiting that directory. Additionally, you can partially match against all of your directories on your computer. For example, if you remember the name of the folder you’re looking for but not the structure, you can find it with “Z”.
Zsh Auto Suggestions
This plugin is awesome, plain, and simple. It keeps track of your command history over time and uses it to autosuggest completions for your command line. It will automatically show you the completion for the command you are trying to run, without needing to tab hoping it will be correct. When it comes to rerunning common scripts for development, building scripts, running scripts, etc, auto suggestions will help speed up your day-to-day work by speeding up all the tedious parts.
Zsh Syntax Highlighting
Let’s be real here, reading through lines and lines of text all day long can eventually get very taxing. The text eventually starts to look like one big blob and it’s challenging to decipher where different parts of your code start and where they end. Zsh syntax highlighting has been great to help alleviate the big blob of text and break it into more readable parts.
The Master List
This list includes some of the plugins I have used and grown to love. However, the list doesn’t stop here, there is a large amount of wonderful plugins that I have yet to encounter. This readme contains a large list of other plugins that work with zsh, as well as tutorials and configuration options for other ways to run zsh and configure zsh for your use case.
Optimising your workflow is important for engineers. Being able to speed up your daily tasks and increase your efficiency means you have more time to focus on other more challenging things and ultimately solve more problems. By saving even 20 minutes per day, in terms of efficiency, it means around 121 hours over the course of a year. With an average workweek of around 40 hours, it means that you’ll be able to save 3 additional weeks of work!
Challenge yourself and find the things that need optimisation in your daily work routine. If you manage to save more time than expected, it’ll take you even less time to optimise your workflow in the long run.