When I moved to using a Mac for development and working on projects involving React.js etc I knew I was going to have to reintroduce myself to the command line and so I started a search around what is considered to be the best terminal emulator and shell to use. During this search, I stumbled across oh-my-zsh and I was an immediate convert.  To quote the developers:

Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, themes, and a few things that make you shout...

"Oh My ZSH!"

So after installing iTerm2 (the product of my original search) and switching zsh for my shell, I installed oh-my-zsh and started configuring it.  


What immediately got my attention when I came across oh-my-zsh was the git integration and the ability for the terminal to show the git status of the folder I was currently in. Now all the themes appear to support this but the theme that really caught my eye was powerlevel10k, the clever use of fonts really condensed the information I needed to know; I finally settled on MesloLGS NF as my preferred font (it's a personal choice).

I use VSCode a lot and use the built-in terminal when live sharing during pairing sessions, so I wanted the same experience there, adding the following to the settings in VSCode resolved that.

    "terminal.external.osxExec": "iterm.app",
    "terminal.integrated.fontFamily": "'MesloLGS NF'",


There are lots of plugins and I haven't even begun to explore them all and I am wary that too many plugins will really impact the shell loading times, though I believe that powerlevel10k has a workaround for that called instant prompt.


I think it goes without saying that I have this plugin enabled, it also comes with lots of useful aliases (of which I know about 10% of them).


I am constantly switching between node versions and I use asdf to manage which node version I should be using when it is important I am not using the default. The oh-my-zsh plugin shows the current version as part of the prompt. Though I only use asdf for managing node installations it supports many other languages such as ruby, elixir, erlang, and countless other community contributions.


This plugin provides auto-suggestions as you type and is a great time saver.


This plugin provides syntax colouring as you type and helps cut down on the obvious typos, alongside `zsh-autosuggestions` this has improved my command line experience.

Other plugins

100s exist, some are novelty ie chuck norris, cow talk etc and I am not so bothered about those long term - good for a laugh but in the end pointless.

Your thoughts are, as usual, appreciated.