by rajaraodv
Nov 13, 2019 I spend a fair amount of time in terminal emulators, and here is how I get a good experience on macOS. I use iTerm2, Zsh, and a few cool command-line tools. I am working on macOS, and I prefer the iTerm2 terminal emulator over the macOS Terminal application.
Sep 25, 2018 Enter fullscreen mode. Exit fullscreen mode. Open terminal and change Terminal Preferences General on Shell open with: select Command (complete path) and set /bin/bash value. With this configuration, now you can use ZSH on iTerm2 and Bash on default Terminal. Although the change with chsh -s $(which zsh) worked perfectly for me, my iTerm2 wouldn't automatically open new terminals with zsh. Instead I went to iTerm2 - Preferences - Profiles - Default and in the General Tab set the Command to /usr/local/bin/zsh instead of Login shell. For zsh and bash users: if you are unable to modify PS1 directly (for example, if you use a zsh theme that wants to control PS1), you must take an extra step. Add export ITERM2SQUELCHMARK=1 before the shell integration script is sourced. Add the iterm2promptmark as directed above to your prompt through those means available to you. Dec 24, 2020 iTerm2 is a replacement for Terminal and the successor to iTerm. It works on Macs with macOS 10.14 or newer. ITerm2 brings the terminal into the modern age with features you never knew you always wanted. Install Oh My Zsh. Oh My Zsh is an open source, community-driven framework for managing your zsh configuration.
In this blog I’ll cover installing ITerm2, ZSH shell, “oh my ZSH”, Themes, ITerm2 color schemes, “oh my ZSH” plugins and enable “ligature” support to help create a beautiful and powerful Terminal.
If you want to just make your regular Bash Terminal powerful, take a look at my previous blog: “Jazz Up Your Bash Terminal”. But ZSH explained in this blog is more powerful stuff.
Summary:
We’ll be covering a lot of things. This may be confusing, so here is the summary of what we will be doing.
- Install ITerm2 — This is a better alternative to the default Terminal
- Install latest ZSH shell — This is more powerful than the regular bash shell. We will switch ITerm2 to use ZSH shell.
- Install “Oh My ZSH “— This is a CLI tool to easily configure ZSH and add themes and plugins to ZSH
- Add two types of Themes using “Oh My ZSH” — some themes need extra steps so we will cover both
- Install different ITerm2 Schemes — These are just color schemes for the UI
- Add two different Plugins using “Oh My ZSH” to improve productivity
- Enable “ligature” support so when you write an arrow =>;, it appears like a real arrow →
Step 1— Install ITerm2
A lot of programmers like ITerm2 instead of the default Terminal. It is similar to the Terminal, but has lots of features of its own. It of course can run ZSH, Bash, and other shells inside it.
The following video shows some of the new features of Item 2 (v3).
For this blog we’ll use ITerm2. When I mention “Terminal”, I mean ITerm2. Although the steps are the same for both Terminal or ITerm2.
Step 2— Change Shell To ZSH
The following video shows why ZSH is better than just a bash shell.
Option 1 — Use Mac’s own ZSH:
Mac comes with a ZSH out-of-the-box, so we don’t need to install it. However, sometimes it’s an older version of ZSH. Typically it’s located at /bin/zsh. To use it, all we need to do is to change shell (chsh).
- Open the Terminal (or ITerm2) and type the following command.
2. Enter the password and it will change the shell, upon logout and login.
3. Logout and re-login
4. To test, open the Terminal and type the following, and it should say zsh.
Option 2— Install Homebrew and Install latest ZSH via Homebrew
This option is pretty common among users, because some of the plugins only work with the latest ZSH.
Homebrew, simply said, is a command line installer for all sorts of software. Let’s install that first.
- Install Homebrew by running the following command.
2. If you get Command Line Tools for Xcode error, it means you haven’t installed the CLI tools for Xcode. If you don’t get the error, you can skip this step, because you already have it installed.
XCode Developer CLI tools are used by various apps that manipulate core OSX features. So make sure to install the Xcode CLI tools by running the following command.
$ xcode-select —-install
Note: The above command opens up Mac’s installer and installs the XCode Developer CLI tools. If it doesn’t work, try xcode-select -r
to reset.
3. Install ZSH via Homebrew
Run the following command to install ZSH. It gets installed at
/usr/local/bin/zsh
PS: Mac’s default ZSH is at /bin/zsh
4. Use the Homebrew version of ZSH
Iterm2 Zsh Powerlevel10k Gist
Run the following command. You will be prompted to enter Mac’s password.
5. Logout and log back in.
6. Test if we are using ZSH and the correct ZSH
Step 3— “Oh My ZSH”
“Oh My ZSH” is a plugin that runs on top of ZSH. It provides default config for ZSH (~/.zhrc file) and also provides themes and more features.
From what I know, most power users who use ZSH also use “Oh My ZSH”.
- Install “Oh My ZSH”
Run the following command to install “oh My ZSH”.
2. Close and quit ITerm2 and reopen it.
It should look something like below. Notice that the prompt has changed and the theme is a bit different — That’s “Oh My ZSH” in action for you.
Step 4— Change Themes And Install Fonts
In this step, we’ll add two different “Oh My ZSH” Themes. “Oh My ZSH” comes with tons of themes. PS: But some Themes need extra steps like installing specific fonts and so on.
To set a Theme, simply open ~/.zshrc file (created by “Oh My ZSH”) and change the theme as shown below.
PS: .zshrc is the config file for ZSH shell. People who don’t use “Oh My ZSH” will have to manually create this file and add any configs themselves. “Oh My ZSH” automatically creates this file if it doesn’t exist and then adds its own set of configs into this file.
Theme 1 — Let’s add a Theme called “Avit”
- Open .zshrc
2. Change the Theme to “Avit”
You can browse all the “Oh My ZSH” Themes here. To change the Theme, simply change the ZSH_THEME value in ~/.zshrc file from robbyrussell to Avit.
3. Update ZSH config
Run the following command to update the config.
4. Change the background color and font size
Open ITerm2 > Preferences > Profiles > Colors and change the background black color to use 20% gray as shown below.
Then open Text > Change Font and change the size to 14pt.
OK, Let’s install a different Theme that needs fonts.
Theme 2 — Installing “agnoster” Oh My ZSH theme
This is a popular theme because it emulates the Powerline Python app that enhances the terminal. The following picture shows how it looks. But this theme also needs us to install Powerline themes.
1. Install Powerline fonts
2. Change the Theme to “agnoster”
3. Quit ITerm2 and reopen it.
4. Set Powerline font
You can set any Powerline patched font you like. All the fonts end with “for Powerline”.
Open
ITerm2 > Preferences > Profiles > Text > Change Font
and set it to something that has “for Powerline”. I’m choosing “Meslo LG DZ for Powerline” font.Note — If you are confused about the fonts and Themes: the Themes are for “Oh My ZSH” and ZSH shell and the fonts are for the Iterm2 itself.
5. All Done
At this point your Terminal should look like below:
Step 5 — Install iTerm2 “color schemes” (ITerm2 Themes)
There are plenty of gorgeous color schemes for iTerm2. These schemes change the foreground color, background color, cursor color, and so on. You can find them at iTerm2-color-schemes Github repo.
Note: These are just color schemes of the ITerm2 UI and don’t deal with the command prompt’s look and feel like “Oh My ZSH”’s themes (other than just changing colors).
Follow these steps to install them.
- Download the iTerm2-color-schemes as a zip file and extract it
- The “Schemes” folder contains all the color scheme files — they end with
.itermcolors
- Open
iTerm2 > Preferences > Profile > Colors > Color Presets > Import
- In the import window, navigate to the “Schemes” folder (from step 2)
- Select all the files so you can import all the color schemes at once
- Simply select whichever color scheme you like.
My favorites are Batman and Argonaut
The Argonaut color scheme looks like below:
Step 6— Install Plugins
Plugins add more functionalities to your workflow. By default “Oh My ZSH” already has the “git” plugin! and that’s why you were able to see all those Git statuses in the prompts in earlier screenshots. Let’s add another one to see how it works.
Note: In this section, we’ll install two different plugins to show how they work.
Plugin 1 — Add Syntax Highlighting Plugin
The Syntax Highlighting plugin adds beautiful colors to the commands you are typing as shown below.
- Clone the zsh-syntax-highlighting plugin’s repo and copy it to the “Oh My ZSH” plugins directory.
2. Activate the plugin in
~/.zshrc
by adding `zsh-syntax-highlighting
to the Plugins section as shown below.3. Re-read zshrc configuration
Plugin 2 — Add ZSH-AutoSuggestion Plugin
This plugin auto suggests any of the previous commands. Pretty handy! To select the completion, simply press → key.
- Install the plugin
PS: ZSH_CUSTOM points to ~/.oh-my-zsh/custom
2. Open
~/.zshrc
and add zsh-autosuggestionsStep 7 — Use Ligature Support
There are various fonts that help make operators like less than, double equals, right arrow, not equals, and so on look beautiful. For example, every time you type: =>, it becomes: →.
To use this, we need fonts that support ligatures. We also need to enable it in ITerm2. FiraCode is one such font. Follow the steps to install and enable ligatures.
- Download the FiraCode repo and extract the zip file (or clone it)
- Open the
dstr > ttf
folder and double click on all the*.ttf
files and select the “Install font” button to install each of the font variations. - Navigate to
ITerm2 | Preferences | Profiles | Text
- Select
Use Ligatures
checkbox - Click on
Change Font
and selectFira Code Regular
font
Summary
We have covered a lot in this blog starting from installing latest ZSH via Homebrew, Oh My ZSH, Plugins, Themes, enable “ligatures” for FiraCode font.
?? Thank you!
If this was useful, please click the clap ? button down below a few times to show your support! ⬇⬇⬇ ??
My Other Posts
ECMAScript 2015+
Terminal Improvements
WWW
Virtual DOM
React Performance
Functional Programming
WebPack
- Webpack & Hot Module Replacement [HMR] (under-the-hood)
Draft.js
React And Redux :
- A Guide For Building A React Redux CRUD App (3-page app)
If this was useful, please click the clap ? button below a few times to show your support! ⬇⬇⬇ ??
If you have questions, please feel free to ask me on Twitter: https://twitter.com/rajaraodv
Z shell (Zsh) is a Unix shell built on top of bash (the default shell for macOS) with a large number of improvements.
In this article, I'll run through how to configure iTerm2 with ZSH and its dependencies.
Step 1: Install Homebrew
Homebrew is a free and open-source software package management system that simplifies the installation of software on Apple’s macOS.
Before installing Homebrew, we need to install the CLI tools for Xcode. Open your terminal and run the command:
If you get an error, run xcode-select -r to reset xcode-select. On my first run I received the following error
Then running
Which produced
You skip this by running the command sudo su, then the command or as suggested
Okay now you can install Homebrew.
Step 2: Install iTerm2
iTerm2 is a replacement for terminal and the successor to iTerm. Most software engineers prefer iTerm2 over the default terminal that ships with macOS as a result of its cool features. You can integrate zsh into iTerm2 to increase productivity.
To install iTerm2, run the command:
Step 3: Install ZSH
Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
By default, macOs ships with zsh located in/bin/zsh.
Let’s install zsh using brew and make iTerm2 use it.
Step 4: Install Oh My Zsh
It runs on Zsh to provide cool features configurable within the ~/.zhrc config file. Install Oh My Zsh by running the command
Check the installed version
zsh --version
You can upgrade it to get the latest features it offers.
Note this command used to be upgrade_oh_my_zsh, however `upgrade_oh_my_zsh` is deprecated. Use `omz update` instead.
Restart iTerm2 to dive into the new experience of using Zsh. Welcome to the “Oh My Zsh” world ?.
That’s not all. Now, we will install the dependencies to get the best out of Zsh.
Step 5: Change the Default Theme
Oh My Zsh comes bundled with a lot of themes. The default theme is robbyrussell, but you can change it to any theme of your choice. In this scenario, I changed it to agnoster, an already pre-installed theme.
You then need to select this theme in your ~/.zshrc. To open the config file (.zshrc), run the command:
Or open the file in a text editor with
Set the zsh theme and update your changes
Using a Custom Theme
To install another theme not pre-installed, clone the repository into custom/themesdirectory. In this scenario, we’ll install powerlevel9k,
Or install powerlevel10k,
or an even better solution and easy to configure is to run
Then, select this theme in your ~/.zshrc
ZSH_THEME='powerlevel10k/powerlevel10k'
Update your changes by running the command
Navigate to iTerm2 > Preferences > Profiles > Colors if you wish to change the background color of the terminal.
The selected theme in this scenario requires powerline fonts. You guessed it, we now need to install that.
Step 6: Install Fonts
I will be using Inconsolata. Get your preferred font out of these powerline fonts. Then, download and install it.
Or download the entire font.
cd fonts
To change the font, navigate to iTerm2 > Preferences > Profiles > Text > Change Font.
Now, you can see Inconsolata listed as one of the fonts. Select your preferred font. For fonts that support ligatures like FiraCode, check the “Use ligatures” option to view your arrows and other operators in a stylish manner like ( → ).
Select a powerline font
Select a powerline font
Step 7: Install Color Scheme
Let’s change the color scheme to bring out the beauty of our terminal. Navigate to iTerm2-Color-Schemes and download the ZIP folder. Then, extract the downloaded folder cos what we need resides in the schemes folder.
Navigate to iTerm2 > Preferences > Profile > Colors > Color Presets > Import
Navigate to the schemes folder and select your preferred color schemes to import them.
Click on a specific color scheme to activate it. In this scenario, I activated Batman which is my preferred color scheme.
Click on a specific color scheme to activate it. In this scenario, I activated Batman which is my preferred color scheme.
Okay - well done, we are down with the basic settings.
Step 8: Install Plugins
Oh My ZSH
Oh My ZSH comes preloaded with a git plugin. To add more, for instance, docker, auto-suggestion, syntax highlighting and more:
Clone the Git repository
Head over to .oh-my-zsh > custom > plugins directory to view the cloned directory. To access this, run the command
![Iterm2 Iterm2](https://kimsereylam.com/assets/posts/2019-11-09-iterm2/shell.png)
Add the plugin to the plugin section of the config file ~/.zshrc shown below
Update your changes by running the command
zsh-autosuggestions
Iterm2 Install
Another very useful plugin is zsh-autosuggestions. Every time you type something, you get a suggestion in grey. Press “tab” key to get even more suggestions (e.g. options of the command).
Oh My Zsh On Mac
Run the following command to install this plugin:
Then open your ~/.zshrc file, add zsh-autosuggestions:
Close the shell and open a new session, it works instantly.
zsh-syntax-highlighting
Iterm2 Zsh
The zsh-syntax-highlighting plugin highlights your command in red if it’s incorrect, on the other hand it highlights in green if it’s correct. To install it, run:
Add it to ~/.zshrc:
Step 9: Add Aliases
Mac Iterm2 Zsh
Aliases are shortcuts used to reduce the time spent on typing commands. Add aliases to commands you run in the section shown below.