8 Terminal Tools to make you a 2x developer
Published: 2020-11-18 14:24:19

---
title:  8 Terminal Tools to make you a 2x developer
published: true
description: Spend minutes instead of hours on your terminal. Saving a few minutes here and there adds up. I'll walk you through my favourite terminal tools to trim time: fuzzy finder; zsh autocomplete; zsh autosuggestions; z; asdf; git badges
tags: 
canonical_url: https://udaraw.com/termina-tips-and-tricks/
cover_image: https://images.unsplash.com/photo-1498084393753-b411b2d26b34?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2689&q=80
---
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](https://www.iterm2.com/downloads.html) with [zsh](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH%5D) 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](https://medium.com/r?url=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh)
---------------------------------------------------------------------------------------------------------------------------------

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:

```
plugins=(
  git
  bundler
  dotenv
  osx
  rake
)
```

**If you use zsh, this is an absolute must-have.** If you don’t have it already, just go [download](https://github.com/ohmyzsh/ohmyzsh) it

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

— [oh my zsh’s github page](https://github.com/ohmyzsh/ohmyzsh)

[2\. powerlevel10k theme — Make your terminal fabulous](https://github.com/romkatv/powerlevel10k)
-------------------------------------------------------------------------------------------------

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.

![](https://miro.medium.com/max/1530/1\*qJ2REoqCNUkIexZOIHPWJA.png)

Different styles you can have with p10k. Credit: [Powerlevel10k’s github](https://github.com/romkatv/powerlevel10k)

One of its killer features is the [**instant prompt**](https://github.com/romkatv/powerlevel10k#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!

![](https://miro.medium.com/max/1920/0\*4U2ZbEVGNQMcN0WL.gif "Powerlevel10k's github")


[3\. fzf — Fuzzy find everything](https://medium.com/r?url=https%3A%2F%2Fgithub.com%2Fjunegunn%2Ffzf)
-----------------------------------------------------------------------------------------------------

**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](https://www.youtube.com/watch?v=1a5NiMhqAR0) is a good intro to some of its slick features that will make you a 2x developer at least.

![](https://miro.medium.com/max/1388/1\*hWkNOvqceMSS-zyvSkjQHQ.gif)

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

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

[**4\. zsh autosuggestions — Type less, do more**](https://github.com/zsh-users/zsh-autosuggestions)
--------------------------------------------------------------------------------------------------------

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.

![](https://miro.medium.com/max/1124/1\*nXrUU70hrloJagE1ltw42Q.png)

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

[5\. z — Hop around directories like bugs bunny](https://github.com/agkozak/zsh-z)
----------------------------------------------------------------------------------

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.

![](https://miro.medium.com/max/2358/0\*vDm8kaC6sJWMDRxp.gif "z github")

[6\. git plugin — Type less, do more pt 2.](https://medium.com/r?url=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh%2Ftree%2Fmaster%2Fplugins%2Fgit)
--------------------------------------------------------------------------------------------------------------------------------------------------

The [git plugin](https://medium.com/r?url=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh%2Ftree%2Fmaster%2Fplugins%2Fgit) 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](https://medium.com/r?url=https%3A%2F%2Fgithub.com%2Fasdf-vm%2Fasdf)
-----------------------------------------------------------------------------------------------------------------------------

I used to have rvm for managing ruby versions, pyenv for python, and nvm for node. Now I just have [asdf](https://medium.com/r?url=https%3A%2F%2Fgithub.com%2Fasdf-vm%2Fasdf) 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

![](https://miro.medium.com/max/1164/1\*yASpGvBY28M0oRkse4eMIw.png)

2\. 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)
}
```

3\. 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

![](https://miro.medium.com/max/2244/1\*v\_stb2lAZRTEuP202T8QlA.png)

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](https://github.com/ohmyzsh/ohmyzsh/wiki/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.