源代码:
function! myfunc()
execute "normal! i\<c-r>=12+34\<cr>"
endfunc
inoremap <silent><Tab> <C-R>=myfunc()<CR>
我的 .vimrc 中有上面的代码,这意味着如果我<tab>
在插入模式下输入,然后它会附加 46。例如,打开一个新文件,输入“hello”(这里没有双引号)然后<tab>
按键,结果应该是“hello46”。虽然它没有。所以为什么?
源代码:
function! myfunc()
execute "normal! i\<c-r>=12+34\<cr>"
endfunc
inoremap <silent><Tab> <C-R>=myfunc()<CR>
我的 .vimrc 中有上面的代码,这意味着如果我<tab>
在插入模式下输入,然后它会附加 46。例如,打开一个新文件,输入“hello”(这里没有双引号)然后<tab>
按键,结果应该是“hello46”。虽然它没有。所以为什么?
这就是你做简单数学的方式:
execute "normal! i" . (12 + 34)
但是你可以使用这种形式:
inoremap <expr> <tab> 12 + 34
编辑
你的错误:
<C-r>=
用于插入表达式的结果,但您的函数不返回任何内容:它改为执行普通模式命令。此版本的代码段有效。该函数返回您可以<C-r>=
在映射中插入的内容:
function! MyFunc()
let myvar = "foo"
return myvar
endfunc
inoremap <silent> <Tab> <C-r>=MyFunc()<CR>