In this post, I will guide you through my terminal setup (which is quite simple though). This post may be updated in the future and is also for my own convenience when I need to set up everything on another machine.

This is how it looks

Terminal emulator

I have been using iTerm2 on a Mac for quite a long time until I found myself not using most of its features, so now I am fine with the default Terminal.app.

Themes

I am a big fan of Solarized themes and use Solarized Light light most of the day and Solarized Dark if I work in the evening or overnight or in bad lighting conditions.

Here is the GitHub repository with those themes implement for Terminal.app by @tomsilav, iTerm2 has them out-of-the-box.

Shell

I use zsh because I like its features (like autocompletion, shared command history, and many others) and extensibility. I also tried fish but it lacked some features I needed that time. Maybe, I will give a try once again.

Plugins

First off, we need to somehow manage our plugins and zsh don’t have such capabilities out-of-the-box. I use antigen to manage my plugins but there is a drawback: it is quite slow itself (mostly written in shell script and Perl) and thus the shell start time is a bit slower. I also tried antibody which is written in Go and thus much faster, but not all of my plugins were working properly when I tried them with antibody and also its syntax is very verbose when it comes to managing plugins bundled with oh-my-zsh.

oh-my-zsh is a configuration framework and a bunch of plugins for zsh. Those include additional autocompletion, coloring man pages and so on.

This is an example of how to use antigen and zsh altogether (place this in your ~/.zshrc - the main zsh configuration file):

source /usr/local/share/antigen/antigen.zsh

# Use oh-my-zsh
antigen use oh-my-zsh

# Include an oh-my-zsh plugin
antigen bundle git

# Include a plugin from GitHub
antigen bundle zsh-users/zsh-autosuggestions

You can find the whole list of plugins I use in this gist, but I would like to highlight a couple of them: