After a few years now of using Vim it has kind of sunk in; There really was a time when I never thought I’d get the handle of h/j/k/l and now I find myself using them where they aren’t even supported.

I am still cross-platform, but have been fortunate enough not to have to use Windows for the past five years so it’s NetBSD for pleasure and then MacOS and Ubuntu for work. So for work, Panic’s Nova has been the first thing in a loooong time to tempt me away from Vim; Atom and VSCode make me want to puke - Sorry, but a web-browser to write code… no. Nova doesn’t offer any kind of Vim support yet but they are working on it so something should come eventually via an extension so I’m not completely lost with key bindings. I’ve had a play with the trial and am highly likely to buy it for work at some point this year just because it’s really nice to look at and a pleasure to use. And if I can make work more pleasurable then I have no qualms paying for Nova out of my own pocket; I’m not shy of the command line, but I’d bought Transmit for work just to make my life easier dealing with umpteen s3 buckets. Plus I have had good experiences with Panic’s products, buying and using these over the years:

  • Transmit
  • Transmit for iOS
  • Prompt for iOS
  • Candybar (when MacOS wasn’t MacOS and was good)
  • Unison

Sure, I can absolutely edit text faster in Vim (:global is great), but as much as I love Vim, Nova is way more polished. Anyway… I haven’t bought it yet… but one thing using the trial made me realise is that I could be handling projects better in Vim; I might have used Vim for ages now, but it doesn’t mean I’m always doing things as efficiently as possible.

How I used to do things was:

  1. Don’t use gvim
  2. One terminal window for all my vim sessions
  3. One tab per session/project, but each time I’d cd to the directory and open vim, re-open :NERDTree, etc.
  4. I’d manually do cmd+i to open the inspector and name the the tab title to suit each project which some action would then overwrite and change.

Playing about with Nova made me realise I could do:

  1. Don’t use gvim
  2. One terminal window for all my vim sessions
  3. Use the Session plugin. This way I can :chdir in Vim and keep that per session, re-opening windows and :terminal from last time
  4. Automatically set the tab title to the session

To do the last one I have the following in .vimrc:

" Tab title, not window title, on MacOS Terminal.app
set t_ts=^[]1;
set t_fs=^G
autocmd BufEnter * let &titlestring = xolox#session#find_current_session()

(The ^[ is actually the ESC control character entered with ctrl+v followed by escape. And the ^G the BEL character entered with ctrl+v followed by 7).

And in Terminal preferences only having “Working directory or document” selected for the Tab Title (unsure how much difference this makes, probably not any).

Asides from the Session plugin I was already using these anyway as a somewhat Nova equivalent:

Those are all arguably way more powerful than what Nova offers too (Fugitive currently trounces the git support within Nova). But… Nova is joyful. And it’s not like I have to stop using Vim… it works great from within Nova’s terminal.