我在nnoremap
中使用相同的字符串inoremap
,iab
和.vimrc
,因此我想将字符串分解为:变量如下< / p>
let s:timestr= '%F %T %Z'
nnoremap <F5> "=strftime(s:timestr)<cr>P
inoremap <F5> <C-R>=strftime(s:timestr)<cr>
iab <expr> dts strftime(s:timestr)
通过查看:help internal-variables
,更具体地来看:help script-variable
,似乎脚本变量s:var
无法在映射中使用。所以我想知道在处理s:timestr
时是否有办法将inoremap
转换为文字。现在看起来它试图解决&#34;每次调用映射时s:timestr
。
答案 0 :(得分:2)
几个想法:
:execute
插入变量,使printf()
更容易理解。if exists('g:plugin_timestr')
有条件的,你就可以使用可发布的插件了。function! s:Timestr()
return '%F %T %Z'
endfunction
您可以通过<SID>Timestr()
代替s:timestr
在映射中使用它。
答案 1 :(得分:0)
一个选项,altought丑陋是使用字符串连接和:exec
let s:timestr= '%F %T %Z'
exec "iab <expr> dts strftime('" . s:timestr . "')"
但它可以说是一种丑陋的语法并且难以阅读。