在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