How to insert the date into vim

12,185

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>
Share:
12,185
nelaaro
Author by

nelaaro

Linux admin, tech enthusiast. opensource evangelist.

Updated on September 18, 2022

Comments

  • nelaaro
    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 2012

    will 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-20

    In vim

    :r!date "+%F"
    message.to.followup.lstF

    Which 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.

  • nelaaro
    nelaaro almost 12 years
    <C-r> is very useful, I wish I had spent more time reading the help in vim.
  • romainl
    romainl almost 12 years
    It's never too late.
  • nelaaro
    nelaaro almost 12 years
    I am choosing your answer as it the most vim like way to do things.
  • math
    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
    erik almost 9 years
    And 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)