在Vim中插入时间戳的最佳方法?

时间:2020-03-05 18:51:18  来源:igfitidea点击:

EditPad Lite具有一个不错的功能(CTRL-ECTRL-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时将其加载。