How do I write the date to a file in Vim?

I keep a journal at work – you should too, if you’re a software developer. I decided to start adding date and time stamps so I don’t have to think. It’s really easy to do in Vim*, just type this in normal mode:

:r !date

and hit Enter. BOOM the date appears on the next line.

If you’d like a bit more detail on why this works run :help :r, or read the rest of this post. The “r” is short for read and generally means “read from another file”.

It can also read the output of a command. Since you can run external commands in Vim by putting an exclamation mark in front of them, you can do things like :r !pwd to litter your current file with /Users/josh/journal/hopes_and_dreams and the like.

Have fun!

* In Linux-based systems that have the date command at least.

Vim in Atom

I installed Atom today as I needed some kind of IDE without forking over a lot of money, or spending time on configuring something. This meant trusting the claim that it works straight out of the box.

Later as I considered whether or not I would use it beyond the one task I needed it for, I googled “vim in atom”. This made me realise that I’ve become acclimatised to Vim to the point that I want its functionality in anything I use, and also begin to wonder why I didn’t just stick to using “vim in vim“.

Luckily, the search results page contained answers to both of these questions.

Why do I use Vim? Partly to score NeckbeardHacker kudos from Unix greybeards, but mainly because it allows you to compose commands so neatly from smaller “words”, as discussed in Why Atom Can’t Replace Vim by Mike Kozlowski. Having become used to hitting commands for “delete three words” (d3w) and suchlike, it’s hardly desirable to go back to Ctrl+This+That shortcuts.

But I’m not a Vim power-user, and as such I want more. Thus, my second question; why don’t I just use vanilla Vim? It lacks a shiny GUI, with lovely nested directory trees, and the plays-well-with-others style of a typical modern IDE. And so I’m waiting for a suitable neovim, or until then, Vim in Atom.