EditPad Lite 有一个很好的功能(控制键-, 控制键-)插入时间戳,例如“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

其他提示

要使其跨平台工作,只需将以下内容放入您的 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() 的文档.

为什么大家都在使用 :r!?找到一个空行并输入 !!date 从命令模式。节省一次按键!

[n.b.这会将当前行通过管道传输到 stdin,然后用命令输出替换该行;因此“查找空行”部分。]

作为 @Swaroop CH 答案的扩展,

^R=strftime("%FT%T%z")

是一种更紧凑的形式,还会打印时区(实际上与 UTC 的区别,采用符合 ISO-8601 的形式)。

如果您出于某种原因更喜欢使用外部工具,

:r !date --rfc-3339=s

将为您提供完整的符合 RFC-3339 的时间戳;使用 ns 代替 s 达到斯波克般的精度,并通过管道 tr ' ' T 在日期和时间之间使用大写 T 代替空格。

此外,您可能会发现了解这一点很有用

:source somefile.vim

将从中读取命令 somefile.vim: :这样你就可以设置一组自定义映射等,然后在该帐户上使用 vim 时加载它。

:r!日期

如果您想要完全相同的格式,则可以将格式添加到日期命令(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> 

可以显示)

看看专用的提示 时间戳插入/更新 在 vim.wikia 上。

对于 Unix 时间戳:

:r! date +\%s

如果您经常使用此命令,您还可以将此命令映射到 VIM 中的某个键(例如 F12):

将其放入您的 .vimrc 中:


map  <F12> :r! date +\%s<cr>

来自 Vim 维基百科.

我使用这个而不必移动我的手来敲击 F 键:

:iab <expr> tds strftime("%F %b %T")

现在在插入模式下,只需输入 tds,只要我按空格键或回车键,我就会获取日期并继续输入。

我把 %b 在那里,因为我喜欢看到月份名称。这 %F 给我一些按日期排序的东西。我可能会将其更改为 %Y%m%d 所以单位之间没有字符。

以前的答案中未包含的另一种快速方法:类型-

!!日期

Unix,使用:

!!date

Windows,使用:

!!date /t

更多详情:参见 插入当前日期或时间

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top