8 Terminal tips to make you a 2x developer

November 14, 2020 ·

3 min read

1 s 62iajcwbvosad9dbk43q

I spend a third of my life sleeping, and I probably spend a quarter of it on my terminal, and I don’t even use vim.

I want to spend these hours getting things done, not trying to remember commands, or typing out the same command for the nth time, or figuring out which terminal window is doing what.

The following tools help me optimize my terminal for productivity. Personally, I use iTerm2 with zsh as my terminal, but a lot of the tools below are terminal-agnostic.

Here we go…

1. oh my zsh — Manage your zsh plugins easier than ever

Oh my zsh allows you to play around with a whole host of plugins by simply updating a list in your .zshrc file.

This is plugin management made so easy your grandma could do it. For example, your ~/.zshrc might look like this:


If you use zsh, this is an absolute must-have. If you don’t have it already, just go download it

Oh My Zsh will not make you a 10x developer…but you may feel like one.

oh my zsh’s github page

2. powerlevel10k theme — Make your terminal fabulous

This is one of the best zsh themes I’ve used, and I highly recommend it. It’s infinitely configurable while still being friendly and easy to use. It has a better onboarding guide than most SaaS products, which makes for an easy transition from whatever theme you’re on currently.


Different styles you can have with p10k. Credit: Powerlevel10k’s github

One of its killer features is the instant prompt. When we sprinkle our terminal with plugins, it can start to get slow. The instant prompt is exactly what it sounds like, it shows you the prompt even if zsh is loading stuff in the background so that you can start typing your next command. No more waiting around!

3. fzf — Fuzzy find everything

If you get one thing from this list, get this.

Remember that one command from three days ago that you ran? No? Me neither.

You probably use ctrl+r for reverse search hoping to get what you’re looking for. Stop it! With fzf you type ctrl+r once and type anything; it will fuzzy find what you’re looking for and you just pick from a list. This video is a good intro to some of its slick features that will make you a 2x developer at least.

Don’t forget to install the keybindings with the following command

$ $(brew --prefix)/opt/fzf/install

4. zsh autosuggestions — Type less, do more

Let past you help current you!

Chances are you type the same command A LOT. For example, I used to type npm run watch a million times. Now, with zsh autosuggestions, I type n and it shows npm run watch, I press the right arrow key, and I’m done. That’s a nearly 85% decrease in keystrokes. That’s a 2x developer move right there.


The grey part is what the plugin is suggesting based on my input so far

5. z — Hop around directories like bugs bunny

You probably spend a lot of time in the same few directories. z tracks your most visited directories and allows you to access them with very few keystrokes. It’s like if `cd` and `autosuggestions` had a baby.

6. git plugin — Type less, do more pt 2.

The git plugin adds a convenience layer for git with a bunch of shortcuts and functions. gl to git pull, gp to git push, gco to git checkout. Fewer words, more speed!

7. asdf — One version management tool to rule them all

I used to have rvm for managing ruby versions, pyenv for python, and nvm for node. Now I just have asdf for all my version management requirements. it works seamlessly with all the .nvmrc/.rvmrc version files and is simple to set up.

8. Iterm2 git badges — stop getting lost in your terminal

How many terminal windows do you normally have open? I usually have a backend server running on one tab, and webpack running on another. In a microservice world, you might have multiple frontend and backend services running in multiple tabs at the same time. Badges make it easy to wrap your head around what’s going on where.

How to:

  1. Install the iterm shell integration


  1. Update your ~/.zshrc with the following. It sets an item variable called gitProject.
function iterm2\_print\_user\_vars() {
  iterm2\_set\_user\_var gitProject $(basename $(git rev-parse --show-toplevel 2> /dev/null) 2> /dev/null)
  1. Update your iterm’s profile to use the variable we created. cmd + I in iterm to bring up the profile. Then add \(user.gitProject) to the badge field


You can play around with badges to have whatever information you need upfront and center in your terminal.

I hope these tips and tricks take you a step further on your path to being a 2x developer.

There are so many more plugins. With how easy it is to install and remove plugins using oh-my-zsh you should really play around with plugins that even remotely pique your interest. The next plug-in you install might change your life.

Share this post


Subscribe to get emails about new articles. No spam ever.
Unsubscribe any time. © 2021