I first heard of Zsh and oh my zsh in the late ’00s, dismissing it as I was happy enough with
bash (being a Version 7 UNIX Bourne shell veteran, not long after Hollerith codes were a ubiquitous thing). I had aliases; used a lot of shell functions and had a home-baked system for organising and managing them; and even had my
bash prompt tell me what Git branch I was on and how many unstaged/untracked files there were. Why did I need to change?
Then I came across a Medium/Free Code Camp article, d’Oh My Zsh, which described the history and some of the unique features, and further reminded me that I could install it and “take it for a spin” before committing myself with the psychologically important (yet reversible!)
chsh. So I did. And some three months on, I don’t want to go back. It’s not that any single feature is particularly mindblowing, or that I can’t sit here and think of a way to implement it—but the collection and openness of the features, plugins, and themes, is a serious productivity and fun boost.
As a simple example: I routinely used to have a dozen or (often) more Terminal tabs open in different windows, so that I could context-switch and multitask. (In reality, several of those tabs had been open for months without doing anything demonstrably useful.) After reading the Medium article, I read the docs (yeah, I’m one of those people) and linked sites. I realised that the (bundled)
jump plugin could clean that clutter (and memory use); just mark a directory, and it’s added to a list that you can display as “Here’s all the stuff I think I ought to be poking at”. Now I’m down to one or two tabs open (the second is needed only when running some sort of server for development), and it’s a lot easier for me to stay focused and find my way around. Win! (I may one day get around to forking/hacking the plugin itself; I’d like for the
marks list-all-marks command to display the timestamp each symlink was created at, so I can focus on and clean out older items of past interest.)
And command completion is amazingly better than with
bash; you don’t know what you’re missing (and I’m not likely to sell you on it) without you giving it a spin for a few days to try out. Software should be both fun and useful; this is.
Dead-finger tech to go on the short list of such.