EditPad Lite具有一个不错的功能(CTRL- E,CTRL- I),可在代码中插入一个时间戳,例如“ 2008-09-11 10:34:53”。
在Vim中获得此功能的最佳方法是什么?
(我正在通过SSH在Linux服务器上使用Vim 6.1。在当前情况下,我们中的许多人共享登录名,因此,如果有另一种内置的获取时间戳的方法,我不想在主目录中创建缩写。 )
Answers:
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 "+\%F \%T"
或:r!date +\%F\ \%T
。
要使其跨平台工作,只需将以下内容放入您的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()的文档。
:Date
通过将以下内容添加到~/.vimrc
配置文件中来定义了一个自定义命令:command! Date put =strftime('%Y-%m-%d')
。它在新行上插入日期。没有制作没有换行符的版本。
作为@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时将其加载。
:put=strftime(""%FT%T%z")
: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>
可以显示)
我想要一个自定义命令:Date
(而不是键映射)将日期插入当前光标位置。
不幸的是,像r!date
这样的简单命令导致换行。所以最后我想到了以下内容:
command Date execute "normal i<C-R>=strftime('%F %T')<CR><ESC>"
它在光标位置添加日期/时间字符串,而不添加任何新行(更改为normal a
在光标位置之后添加)。