在Vim中插入时间戳的最佳方法是什么?
EditPad Lite有一个很好的function( CTRL – E , CTRL – I ),它在你的代码中插入一个时间戳,例如“2008-09-11 10:34:53”。
在Vim中获得这个function的最好方法是什么?
(我通过SSH在Linux服务器上使用Vim 6.1,在目前的情况下,我们有很多人共享一个login名,所以我不想在主目录中创build缩写,如果有另一个内置的方法来获得时间戳。 )
http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/
试了一下,它在我的mac上工作:
:r! date 生产:
 Thu Sep 11 10:47:30 CEST 2008 
这个:
 :r! date "+\%Y-\%m-\%d \%H:\%M:\%S" 
生产:
 2008-09-11 10:50:56 
 要使其跨平台工作,只需在vimrc以下内容: 
 nmap <F3> i<CR>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc> imap <F3> <CR>=strftime("%Y-%m-%d %a %I:%M %p")<CR> 
 现在你可以在Vi / Vim里随时按下F3,你会得到一个像2016-01-25 Mo 12:44插入光标的时间戳。 
有关可用参数的完整说明,请查看C函数strftime()的文档 。
作为@Swaroop CH的回答的延伸,
 ^R=strftime("%FT%T%z") 
是一个更紧凑的forms,也将打印时区(实际上与UTC,符合ISO-8601标准的forms的差异)。
如果出于某种原因您更愿意使用外部工具,
 :r !date --rfc-3339=s 
 会给你一个完整的RFC-3339兼容的时间戳; 使用ns而不是s来获得类Spock的精度,并且通过tr ' ' T来使用大写字母T来代替date和时间之间的空格。 
你也许会发现知道这个很有用
 :source somefile.vim 
 将读取来自somefile.vim命令:通过这种方式,您可以设置一组自定义的映射等,然后在您使用该帐户的vim时加载它。 
 为什么大家都在使用:r!  ? find一个空行,并从命令模式键入!!date 。 保存击键! 
[nb这会将当前行传入stdin,然后用命令输出replace该行; 因此“find一条空白线”部分。]
看看专门用于 vim.wikia上的时间戳插入/更新的提示。
,R! date
然后你可以添加格式到date命令(mandate),如果你想要完全相同的格式,并添加这个vim别名以及
,R! date+“\%Y – \%m – \%d \%H:\%M:\%S”
这产生了你在例子中显示的格式(shell中的date不使用\%,而只是%,vim用当前文件的名称replace%,所以你需要将其转义)。
您可以在.vimrc中添加一个地图来自动放置该命令,例如,每次按下F3:
 :map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr> 
(编辑从上面:))(编辑:改变文字部分代码,这样的
 <F3> 
可以显示)
对于一个unix时间戳:
,R! date+ \%s
您也可以将此命令映射到VIM中的某个键(例如F12),如果您使用它的话:
把它放在你的.vimrc中:
 map <F12> :r! date +\%s<cr> 
时间戳脚本
以前的答案不包括的另一种快捷方式是:
!!date
来自Vim Wikia 。
我用这个而不是必须移动我的手来打F键:
 :iab <expr> tds strftime("%F %b %T") 
现在在插入模式下,只需键入tds,一旦我点击空格键或返回,我就会得到date并继续input。
 我把%b放在那里,因为我喜欢看月份的名字。  %F给了我一些按datesorting的东西。 我可能会把它改成%Y%m%d所以单位之间没有字符。 
Unix的使用:
 !!date 
Windows使用:
 !!date /t