vim iab调用函数插入不同的时间(戳)

时间:2013-07-16 20:33:30

标签: ruby vim time scripting abbreviation

我想在vim缓冲区中使用以下内容,最好独立于操作系统。

  1. 键入today将被=20130716取代。 需要等号!
  2. 键入tomorrow将被=20130717
  3. 取代
  4. 键入nextweek将被=20130723
  5. 取代

    作为上述行的信息:今天是2013年7月16日

    For 1.我可以使用(在Windows上不起作用):

    iab <expr> tod strftime("=%Y%m%d")
    

    对于2.和3.我可以使用(没有Windows并添加额外的不需要的回车):

    iab tom <C-o>:r !date -v+1d "+\%Y\%m\%d"<CR>
    

    对于2.和3.我可以使用(OS独立但也有额外的不需要的回车):

     iab too <ESC>:r !ruby -e "puts (Time.now + 24*60*60).strftime('\%Y\%m\%d')"<CR>   
    

    我如何实现自己的需求。最佳操作系统独立和红宝石方式:)对于第一种方法2.和3.避免不需要的回车是很好的。

    我的vim内置了ruby,所以也许有更智能的方法可以调用我显示的ruby命令。目前我不知道更好的方法。

1 个答案:

答案 0 :(得分:3)

在插入模式下尝试使用以下映射:

:inoremap <expr> today strftime( "=%Y%m%d", localtime() )
:inoremap <expr> tomorrow strftime( "=%Y%m%d", localtime() + (24 * 3600) )
:inoremap <expr> nextweek strftime( "=%Y%m%d", localtime() + (7 * 24 * 3600) )