在Vim中插入时间戳的最佳方法?
EditPad Lite具有一个不错的功能(CTRL
-E
,CTRL
-I
),可以插入时间戳,例如将" 2008-09-11 10:34:53"插入代码。
在Vim中获得此功能的最佳方法是什么?
(我正在通过SSH在Linux服务器上使用Vim 6.1. 在当前情况下,我们中的许多人共享登录名,因此,如果有另一种内置的获取时间戳的方法,我不想在主目录中创建缩写。 )
解决方案
回答
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
回答
:r!日期
然后,如果我们想要完全相同的格式,则可以将格式添加到date命令(man date)中,并将其也添加为vim别名
:r!日期+" \%Y-\%m-\%d \%H:\%M:\%S"
这样就产生了我们在示例中显示的格式(shell中的日期不使用\%,而仅使用%,vim用当前文件的名称替换%,因此我们需要对其进行转义)。
我们可以在.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>
回答
要使其跨平台工作,只需将以下内容放入vimrc
中:
nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc> imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>
现在,我们可以随时在Vi / Vim中按F3键,并在光标处插入类似" 2016-01-25 Mo 12:44"的时间戳。
有关可用参数的完整说明,请查看C函数strftime()的文档。
回答
看看vim.wikia上专门用于时间戳插入/更新的技巧。
回答
时间戳记脚本
回答
作为@Swaroop CH答案的扩展,
^R=strftime("%FT%T%z")
是一种更紧凑的格式,还将打印时区(实际上是与UTC的时差,采用的是ISO-8601兼容格式)。
如果我们出于某种原因更喜欢使用外部工具,
:r !date --rfc-3339=s
将为我们提供符合RFC-3339的完整时间戳;使用ns
而不是s
获得类似Spock的精度,并通过'tr''T进行管道传输以使用大写字母T代替日期和时间之间的空格。
另外,我们可能会发现了解这一点很有用
:source somefile.vim
将从" somefile.vim"中读取命令:这样,我们可以设置一组自定义的映射等,然后在该帐户上使用vim时将其加载。