How to insert the date into vim
Solution 1
Vim has an internal strftime()
function. Try this (in insert mode):
<C-r>=strftime('%F')<CR>
Solution 2
I kept experimenting till I figured out that vim was expanding the "%" character. So just escape "\%" and every thing works as I expected.
:r!date "+\%F"
2012-07-20
Now I can put dates into files Like I would like to
:r!date "+\%F" -d "-2 day"
2012-07-18
Solution 3
Another method, without escaping, using system()
:
system('date +%F')
In INSERT mode:
<C-r>=system('date +%F')<CR>
In NORMAL mode:
:put=system('date +%F')<CR>
nelaaro
Linux admin, tech enthusiast. opensource evangelist.
Updated on September 18, 2022Comments
-
nelaaro over 1 year
In vim you can execute comands with "!". You can combine that with "r" to insert the output into your current buffer.
:r!date
Fri Jul 20 09:39:26 SAST 2012will insert the date into a file.
Now when I try to do some more interesting stuff like date with different format +%F. On the command line
$ date +%F
2012-07-20In vim
:r!date "+%F"
message.to.followup.lstFWhich out puts the name of the file and puts F after it. some how the r!date "+%F" is being expanded in vim and not run on the command line. What do I need to do to run that so it puts the contents in vim.
Maybe vim has a better way to insert dates into files.
-
Ciro Santilli Путлер Капут 六四事 over 9 yearspossible duplicate: stackoverflow.com/questions/6344750/…
-
nilon over 4 yearsHere is another valid response using <F3>. You will need to modify your
vimrc
to get any date format you like, automatized.
-
-
nelaaro almost 12 years<C-r> is very useful, I wish I had spent more time reading the help in vim.
-
romainl almost 12 yearsIt's never too late.
-
nelaaro almost 12 yearsI am choosing your answer as it the most vim like way to do things.
-
math almost 12 years+1 That you can use with other programs than
date
too, and hence its easier to remember than the internat "strftime"-thing. -
erik almost 9 yearsAnd in normal mode this is the same (insert date at current position):
"=strftime("%F")<CR>P
(Source: vim.wikia.com/wiki/Insert_current_date_or_time)