在VIM中格式化DateTime,在月,日和小时不带前导零

时间:2010-07-19 07:36:40

标签: vim

有没有人知道是否有办法格式化strim在Vim中生成的日期(在MS Windows下),使得月,日和小时不会填充到带有前导零的两位数字?

例如,vimrc中的以下命令:

nmap <F3> a<C-R>=strftime("%I:%M %p %m/%d/%Y ")<CR><Esc>
imap <F3> <C-R>=strftime("%I:%M %p %m/%d/%Y ")<CR>

将打印

03:32 AM 07/09/2010 

进入文件,如果它实际上是7月9日。

我想知道是否有可以打印的格式字符串

3:32 AM 7/9/2010

代替vim。我知道strftime是特定于平台的,所以我在寻找一种特定于Windows的解决方案,而不使用外部工具。我也很感激评论说这些限制是不可能的。

感谢。

2 个答案:

答案 0 :(得分:1)

某些操作系统分别支持{1}}和%k一位数小时和天。这些似乎都没有在Windows上得到支持(或者至少在Windows XP上不受支持,至少我已经在附近尝试过它了。)

但并非一切都没有丢失。 Windows确实支持%e,它会以%x格式提供您想要的日期,我们可以通过调用7/9/2010来消除任何前导零:

substitute()

打印

echo substitute(strftime("%I:%M %p %x"), "^0", "", "")

请记住,所有这些不仅特定于操作系统,还特定于当前区域设置。这根本不可携带。

答案 1 :(得分:0)

我不知道是否有任何方法可以告诉strftime()如何生成您正在寻找的内容。但是,您仍然可以应用substitute(strftime(...), '\<0\+\ze\d', '', 'g')