I keep diaries on different subjects. When I add a new entry I start by inserting a timestamp at the top of the entry. I used to do it ‘manually’ –by copying the current date and pasting in into Vim–, and yesterday I decided to write a vim function to automate that.
There’s nothing especially hard about that, but it took me a while before I figured out how to insert the timestamp at the current cursor position. It didn’t look like there was any built-in Vim function to do it, and most solution I found online seems overly complicated.
It turns out that all I needed was an execute statetement like this:
execute ":normal itext to insert"
, this will insert the string “text to
insert” at the current cursor position.
I this added to my vimrc:
function s:InsertISODate()
let timestamp = strftime('%Y-%m-%d')
execute ":normal i" . timestamp
echo 'New time: ' . timestamp
endfunction
function s:InsertISODatetime()
let timestamp = strftime('%Y-%m-%d %H:%M:%S')
execute ":normal i" . timestamp
echo 'New time: ' . timestamp
endfunction
command Today call s:InsertISODate()
command Now call s:InsertISODatetime()