2

我希望 vim 缓冲区中的以下内容,最好独立于操作系统。

  1. 打字today将被替换=20130716需要等号!
  2. 键入tomorrow将替换为=20130717
  3. 键入nextweek将替换为=20130723

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

对于 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. 我可以使用(独立于操作系统,但还有额外和不需要的回车):

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

我怎样才能实现我的愿望。最好的操作系统独立和红宝石方式:) 对于第一种方法 2. 和 3. 避免不必要的回车会很好。

我的 vim 内置了 ruby​​,所以也许有一种更聪明的方法来调用我显示的 ruby​​ 命令。目前我不知道更好的方法。

4

1 回答 1

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) )
于 2013-07-16T20:42:29.583 回答