有没有人知道是否有办法格式化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的解决方案,而不使用外部工具。我也很感激评论说这些限制是不可能的。
感谢。
答案 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')
。