Friday, June 14, 2024

Configuration, Customization & Utilization — SitePoint

Must read

On this article, I’ll present you how one can set up zsh, then provide ten ideas and tips to make you extra productive when working with it.

As internet builders, the command line is changing into an ever extra necessary a part of our workflow. We use it to put in packages from npm, to check API endpoints, to push commits to GitHub, and plenty extra in addition to.

My shell of selection is zsh. zsh is a extremely customizable Unix shell, that packs some very highly effective options equivalent to killer tab completion, intelligent historical past, distant file growth, and rather more.

It is a beginner-level zsh information which might be adopted by anyone (even Home windows customers, because of Home windows Subsystem for Linux). Nonetheless, in mild of Apple’s announcement that zsh is now the usual shell on macOS Catalina, Mac customers would possibly discover it particularly useful.

Let’s get began.

Putting in zsh

I don’t wish to provide in-depth set up directions for every working system, however quite some basic tips as a substitute. In the event you get caught putting in zsh, there’s loads of assist accessible on-line.

On the time of writing, the present zsh model is 5.7.1.

Putting in zsh on macOS

Most variations of macOS ship with zsh pre-installed. You’ll be able to verify if that is so, and if that’s the case, which model you’re working utilizing the command: zsh --version. If the model is 4.3.9 or increased, try to be good to go (we’ll want at the least this model to put in Oh My Zsh in a while). If not, you may comply with this information to put in a more moderen model of zsh utilizing Homebrew.

As soon as put in, you may set zsh because the default shell utilizing chsh -s $(which zsh). After issuing this command, you’ll must log off, then log again in once more for the modifications to take impact.

If at any level you resolve you don’t like zsh, you may revert to Bash utilizing chsh -s $(which bash).

Putting in zsh on Linux

On Ubuntu-based distros, you may set up zsh utilizing sudo apt-get set up zsh. As soon as the set up completes, you may verify the model utilizing zsh --version, then make zsh your default shell utilizing chsh -s $(which zsh). You’ll must log off, then log again in for the modifications to take impact.

As with macOS, you may revert again to Bash utilizing chsh -s $(which bash).

In the event you’re working a non-Ubuntu-based distro, then try the directions for different distros.

Putting in zsh on Home windows

Sadly, that is the place issues begin to get somewhat sophisticated. Zsh is a Unix shell, and for it to work on Home windows, you’ll must activate Home windows Subsystem for Linux (WSL), an surroundings in Home windows 10 and 11 for working Linux binaries.

There are numerous tutorials on-line explaining how one can stand up and working with zsh in Home windows 10. I discovered these two to be up-to-date and straightforward to comply with:

Notice that it’s additionally potential to get zsh working with Cygwin. Listed below are directions for doing that.

First Run

While you first open zsh, you’ll be greeted by the next menu.

If you choose (1), you’ll be taken to a menu that lets you configure historical past, keybindings and a bunch of different issues. Nonetheless, I counsel choosing (2), which is able to create a configuration profile with the really helpful default settings.

Finding the Configuration File

Now let’s take a look on the file that zsh simply created. Enter your own home listing and open the .zshrc file in your editor of selection. This file is run everytime you begin zsh and is the place the place any customized configuration lives.

Notice: file names that start with a dot are hidden by default on most working programs, so that you’ll must make it seen earlier than you may edit it. In the event you’re undecided how, seek for “Present hidden dot information mac/Linux and so on”.

We are able to exhibit how this file works by creating an alias. Of their easiest type, aliases are terminal shortcuts for normal instructions. Add the next to the underside of .zshrc and save the file:

alias myip="curl http://ipecho.internet/plain; echo"

Restart your shell (for instance, by closing it then opening it once more), then kind myip. Offering you might have the cURL program put in, it’s best to see your present public IP handle output to the terminal. In the event you’d wish to experiment extra with aliases, try 7 Tremendous Helpful Aliases to make your growth life simpler.

Shut the terminal by typing exit, then find the .zsh_history file, which can be in your house listing. That is the place zsh shops an inventory of your earlier terminal instructions. At the moment it ought to comprise two strains — myip and exit.

Notice: we’ll be reloading our shell a number of occasions by means of out the tutorial. It’s also possible to do that with a command: supply ~/.zshrc.

Examine Your Progress

By this level it’s best to have zsh put in and set as your default shell. In the event you expertise any issues, attempt creating a subject on SitePoint’s boards and ask for assist there.

Now let’s get into some ideas.

1. Set up Oh My Zsh

In the event you solely comply with one among the following tips, it must be this one.

Oh My Zsh is a community-driven framework for managing your zsh configuration and comes bundled with 1000’s of useful capabilities, helpers, plugins and themes. Most of the following ideas will depend on you having this put in.

As is defined on the venture’s house web page, you may set up it utilizing cURL or wget:

sh -c "$(curl -fsSL"
sh -c "$(wget -O -)"

This assumes you might have Git put in, which you hopefully do already. If not, you may seize it from the venture’s homepage.

Oh My Zsh post install message

As you may see, from the submit set up message, Oh My Zsh created a backup of your .zshrc file, then changed it with its personal model. Which means you’ll want to repeat over any customized configuration (equivalent to our myip alias) to your new .zshrc file.

2. Choose a Theme

In the event you spend loads of time within the terminal, it’s price investing some effort in making it visually interesting. Fortunately Oh My Zsh ships with a complete bunch of themes.

In the event you look within the ~/.zshrc file for the ZSH_THEME variable, you’ll discover it’s set to robbyrussel. That is the default theme that the creator of Oh My Zsh makes use of.

To put in a distinct theme, choose one from the hyperlink above and alter the worth of the ZSH_THEME variable, earlier than restarting your shell. For instance, setting ZSH_THEME="avit" will trigger Oh My Zsh to make use of the avit theme.

You may additionally like to change the colour scheme on your terminal. On my Linux machine, I may do that by way of Edit > Preferences > Colours. Eradicating the tick from Use colours from system theme, then choosing Solarized darkish as a scheme, offers me a really interesting end in subsequent to no time.

Avit theme on Oh My Zsh

Discover how the theme acknowledges that it’s in a Git repo, tells me which department I’m on, and shows a inexperienced tick to let me know that every part is updated.

I encourage you to take a look by means of the accessible themes and discover one which fits you.


After I was testing this on WSL, I used to be seeing damaged characters in my terminal, as quickly as I put in Oh My Zsh. To treatment this, I needed to set up the Powerline fonts and inform my terminal to make use of them:

git clone

Then open an admin PowerShell, navigate to the foundation of the repo and run:

.set up.ps1

If PowerShell blocks you from working the script, then attempt setting the ExecutionPolicy as per this Stack Overflow reply. As soon as the fonts are put in, make sure you set it again once more.

Lastly, proper click on on the terminal’s title bar, select Properties > Font and ensure a Powerline font is chosen. In testing, Deja Vu Sans Mono for Powerline labored nicely for me.

Additionally notice that a few the themes require Powerline fonts, whatever the working system. We’ll have a look at putting in one among these themes (Agnoster) in the direction of the top of the article.

3. Working with Historical past

Considered one of my favourite Oh My Zsh options is the way in which that it allows you to search by means of your historical past. Think about that the contents of .zsh_history appear to be this:

cd Desktop
mkdir my-project
cd my-project
npm init -y
mkdir {src,construct}
contact index.js

In the event you’re within the terminal and press the key, you’d anticipate to cycle by means of every of these historical past entries one after the other, proper? No shock there.

Nonetheless, Oh My Zsh lets you enter the start of a command, then press the key to cycle by means of matching entries. So, within the above instance for those who entered “mkdir” after which pressed the key, you’ll see “mkdir {src,construct}” displayed. In the event you pressed it once more, you’ll then see “mkdir my-project”.

I take advantage of this function on a regular basis. For example, once I wish to ssh right into a server and might’t keep in mind the precise credentials, I simply enter “ssh” and might cycle by means of current connections till I discover the appropriate one. Or, once I can’t keep in mind the precise syntax of a command, I can simply enter the primary few characters and cycle by means of any matches.

4. Autosuggestions FTW!

One other nice function of Oh My Zsh is plugins. These add new options to your shell and increase its performance.

Oh My Zsh ships with tons of of plugins for each conceivable use and we’ll have a look at a few of these later within the article. On this part nevertheless, I’d wish to introduce you to a 3rd social gathering plugin referred to as autosuggestions. This implies instructions as you kind primarily based on historical past.

To put in, you must clone its repository into $ZSH_CUSTOM/plugins. By default that is ~/.oh-my-zsh/customized/plugins:

git clone ${ZSH_CUSTOM:-~/.oh-my-zsh/customized}/plugins/zsh-autosuggestions

As soon as completed, to activate it, hop into the ~/.zshrc file and uncomment the next line:

Then change git with zsh-autosuggestions:


Restart your shell, and also you’ll discover that as you kind a command, Oh My Zsh will make strategies primarily based in your historical past. If the suggestion is the one you’re on the lookout for, press the key to simply accept it. An actual time saver!

Autosuggestions with Oh My Zsh

5. File Navigation with Oh My Zsh

One other superior factor about Oh My Zsh is how simple it makes it to navigate round your machine.

For instance, once you wish to change listing, it isn’t essential to enter the cd command; cd Desktop simply turns into Desktop. And that works with paths, too: you may enter /house/jim/Desktop and find yourself proper the place you needed to go.

Oh My Zsh has nice autocomplete, too. After getting began typing a path, you may press TAB to have it increase an inventory of all potential folders you may navigate to. In the event you proceed tabbing, you may transfer by means of this checklist till you choose a folder by urgent Return. Urgent TAB once more after that can restart the method.

Oh My Zsh file navigation with TAB completion

Lastly, it’s price mentioning that Oh My Zsh gives plenty of instructions and aliases for working with, and navigating directories. For instance, typing ... will transfer you up two directories and typing take <dir-name> will create a brand new listing and navigate to it. Oh My Zsh additionally helps dynamic path completion, so typing (for instance) /h/j/De and urgent Tab will increase the trail to /house/jim/Desktop. Cool, eh?

Bonus Tip: for those who’re feeling lazy, you may simply drag and drop a folder onto the terminal window and the trail will probably be expanded for you.

6. Navigate to Something Utilizing z

z is a useful plugin that builds an inventory of your most frequent and up to date folders (it calls these “frecent”) and lets you leap to them with one command. That is typically rather more handy than having to tab by means of a nested folder construction.

To put in the plugin, all you need to do is add it to your .zshrc file like so:

plugins=(z zsh-autosuggestions)

Then restart your terminal.

As soon as put in, z may have a brief studying part because it observes you navigating round your PC with the terminal. After some time, nevertheless, you’ll have the ability to kind z adopted by any phrase that’s in your required listing path. The plugin will use fuzzy matching to determine which folder you wish to go to and increase the trail accordingly. If there’s multiple risk, you may tab by means of the choices as described within the earlier tip.

This won’t sound like a giant deal, however you’ll have the ability to open a shell, kind z my-project and have it increase the trail to /house/jim/information/some/deeply/nested/listing/or/different/my-project. Then once you’re in that listing, you may kind z my-other-project and have it increase the trail to /var/www/html/tasks/prime/secret/my-other.venture.

Notice: the primary time I ran z, and tried to alter listing, I acquired the error
_z_dirs:2: no such file or listing: /house/jim/.z. This was a one off, as z apparently wanted to make a .z file in my house listing. In the event you run into any issues, this text has some strategies.

7. Working with Git

Zsh consists of some fundamental Git integration out of the field. For instance, for those who kind git and press the Tab key, zsh will helpfully spit out an extended checklist of potential git instructions. This turns into barely extra helpful for those who kind git, adopted by the primary couple of letters of the command you’re on the lookout for. For instance git a + Tab produces this:

add        -- add file contents to index
am         -- apply patches from a mailbox
apply      -- apply patch to information and/or to index
archimport -- import an Arch repository into git
archive    -- create archive of information from named tree

Issues begin to get extra attention-grabbing once you set up the Oh My Zsh git plugin:

plugins=(git z zsh-autosuggestions)

This gives a complete bunch of aliases, in addition to some helpful capabilities for working with Git. Among the ones I take advantage of incessantly are:

  • gaagit add all
  • gdcagit diff --cached
  • gpgit push
  • gpf!git push --force
  • grhhgit reset --hard
  • gstgit standing

You possibly can additionally create an alias for a number of instructions without delay, by including the next to your .zshrc file:

perform acp() {
  git add .
  git commit -m "$1"
  git push

Now, once you’re in a Git repo, typing acp "a commit message" will add all modified information, commit them with no matter commit message you specified, then push them to your distant. Credit score for this concept goes to Ali Spittel.

8. Get Immediate Suggestions on the State of a git Repo

On the prime of the article, we activated a theme referred to as avit. When in a Git repo, this theme will show the department title, in addition to a cross or tick indicating whether or not every part department is up-to-date. I like having the ability to see this data at a look, and it’s undoubtedly a giant step up from having to kind git standing on a regular basis.

There are a few themes, nevertheless, that show this data in a extra intuitive manner. My favourite is Agnoster. Let’s set up that now.

For Agnoster to render arrows and Git icons accurately, you’ll seemingly want to put in a Powerline-patched font. WSL customers can do that by following the directions within the troubleshooting part above. For macOS and Linux customers, set up directions might be discovered within the venture’s repo.

Mac customers on Excessive Sierra or later could must carry out some further work to get these fonts to show. Until you’re on Catalina, this methodology is really helpful. Catalina customers might want to set up a patched font and choose it of their terminal settings.

To check in case your terminal can show the entire essential characters, run the next command:

echo "ue0b0 u00b1 ue0a0 u27a6 u2718 u26a1 u2699"

The end result ought to appear to be the picture beneath.

Powerline fonts required for the Agnoster theme

After that, allow the theme by altering the next line in your .zshrc file:


Then restart the terminal. As soon as Agnoster is up and working, you’ll have a extra intuitive view of the standing of any Git repository. You’ll additionally obtain visible suggestions as as to whether the earlier command succeeded or failed, and whether or not you’re working with elevated privileges.

Up and running with the Agnoster theme

Tip: for those who don’t just like the person@host a part of the immediate, you can also make this disappear by including DEFAULT_USER=your_user_name to the .zshrc file.

9. Plugins, Plugins, Plugins

As talked about, Oh My Zsh ships with so much of plugins. You actually ought to look by means of these and make investments a while studying these that can assist your workflow. To get you began, listed here are some standard ones to pay attention to:

  • cloudapp – uploads information and piped contents to the Cloudapp service. Outputs and copies the resultant URL to the clipboard.
  • command-not-found: if a command isn’t acknowledged within the $PATH, it will use Ubuntu’s command-not-found bundle to seek out it or counsel spelling errors (just for Ubuntu and openSUSE).
  • node: open the Node API, on your present model, in your browser.
  • npm: provides autocompletion to npm.
  • sudo: hitting ESC twice places sudo in entrance of the present command, or the final one if the command line is empty.
  • vscode: makes interplay between the command line and the code editor simpler.

10. Key Combos

This isn’t a zsh particular tip, however to wrap up I needed to make you conscious of those 5 time-saving key combos.

  • Ctrl + U: delete from the cursor to the beginning of the road.
  • Ctrl + Ok: delete from the cursor to the top of the road.
  • Ctrl + W: delete from the cursor to the beginning of the previous phrase.
  • Alt + D: delete from the cursor to the top of the subsequent phrase.
  • Ctrl + L: clear the terminal.

In the event you can memorize these, you’ll be shocked at how typically they turn out to be useful.


On this article, I’ve demonstrated how one can set up zsh (Z shell) and set it as your default shell. I’ve additionally confirmed how one can get essentially the most out of your new terminal with the Oh My Zsh framework. It’s my hope that, for those who give these a attempt for a few weeks, you’ll marvel the way you ever did with out them.

And don’t overlook: in case you have any issues with any of this, you may jump over to SitePoint boards and ask for assist there. I’d even be completely satisfied to listen to if I missed something out — for instance, your favourite theme, plugin, alias, or productiveness tip.

You’ll be able to hit me up both on the boards or on Twitter.

FAQs about Zsh (Z shell)

What’s Zsh (Z shell)?

Zsh, brief for Z shell, is a complicated Unix shell that gives highly effective customization choices, improved scripting capabilities, and interactive options for command-line interfaces.

How is Zsh totally different from different shells like Bash?

Zsh affords options like superior tab completion, spelling correction, customizable prompts, and extra scripting choices. It’s designed to boost person expertise and productiveness in comparison with conventional shells like Bash.

How do I set up Zsh?

Zsh is commonly pre-installed on macOS and plenty of Linux distributions. If not, you may set up it utilizing your system’s bundle supervisor. For instance, on Debian-based programs, you may run sudo apt-get set up zsh.

How can I set Zsh as my default shell?

You’ll be able to change your default shell to Zsh by working the command chsh -s $(which zsh). This can replace your shell choice within the system’s person configuration.

What are Zsh plugins?

Zsh plugins are extensions that improve Zsh’s capabilities. They will present further options like syntax highlighting, auto-suggestions, and improved completion for particular instructions or languages.

How can I set up Zsh plugins?

Zsh plugin managers like “Oh My Zsh,” “Zplug,” and “Antigen” make it simple to put in and handle plugins. Every supervisor has its personal setup directions, normally involving modifying your Zsh configuration file.

What’s Oh My Zsh?

Oh My Zsh is a well-liked framework for managing Zsh configurations and plugins. It features a assortment of pre-built themes and plugins which you can simply allow or customise.

How do I customise my Zsh immediate?

You’ll be able to customise your Zsh immediate by modifying the PS1 surroundings variable in your Zsh configuration file (normally ~/.zshrc). Alternatively, utilizing frameworks like Oh My Zsh lets you select and customise themes.

Can I take advantage of my Bash configurations with Zsh?

Sure, many Bash configurations might be tailored for Zsh. Nonetheless, Zsh has its personal syntax and options, so some modifications is likely to be essential to completely make the most of its capabilities.

How do I allow syntax highlighting in Zsh?

You’ll be able to allow syntax highlighting by utilizing Zsh plugins like “zsh-syntax-highlighting.” Set up the plugin and add its activation command to your Zsh configuration file.

What are Zsh themes?

Zsh themes decide the looks of your terminal immediate. They typically show helpful data like the present listing, Git standing, and extra. Oh My Zsh consists of quite a lot of themes you may select from.

Can Zsh run my current Bash scripts?

Sure, Zsh can run Bash scripts, however some compatibility points would possibly come up on account of syntax variations between the 2 shells. It’s apply to validate and modify scripts to make sure they work accurately in Zsh.

Can I take advantage of Zsh on Home windows?

Sure, you need to use Zsh on Home windows by putting in it by means of instruments like Cygwin, Home windows Subsystem for Linux (WSL), or Git Bash. Nonetheless, organising Zsh on Home windows would possibly contain some further steps.

Supply hyperlink

More articles


Please enter your comment!
Please enter your name here

Latest article