-1

源代码:

function! myfunc()
    execute "normal! i\<c-r>=12+34\<cr>"
endfunc

inoremap <silent><Tab> <C-R>=myfunc()<CR>

我的 .vimrc 中有上面的代码,这意味着如果我<tab>在插入模式下输入,然后它会附加 46。例如,打开一个新文件,输入“hello”(这里没有双引号)然后<tab>按键,结果应该是“hello46”。虽然它没有。所以为什么?

4

1 回答 1

1

这就是你做简单数学的方式:

execute "normal! i" . (12 + 34)

但是你可以使用这种形式:

inoremap <expr> <tab> 12 + 34

编辑

你的错误:

  1. 函数名称必须以大写字母开头。
  2. <C-r>=用于插入表达式的结果,但您的函数不返回任何内容:它改为执行普通模式命令。

此版本的代码段有效。该函数返回您可以<C-r>=在映射中插入的内容:

function! MyFunc()
  let myvar = "foo"
  return myvar
endfunc

inoremap <silent> <Tab> <C-r>=MyFunc()<CR>
于 2013-02-22T07:43:11.993 回答