0

在 vimrc 中添加代码导致

"E488: Trailing characters: <c-r>=12+34<cr>" 

总是出现

<c-r>=12+34<cr>

那里发生了什么事?

我的原始代码:

function! CleverTab()
    if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
        return "\<Tab>"
    endif
    if pumvisible()
        return "\<C-N>"
    endif
    let s:codecompl = CodeComplete()
    "<c-r>=s:codecompl<cr>
    <c-r>=12+34<cr>
    "exec " " .s:codecompl. "\<enter>"."."
    "if g:swith_region_flag == 1
    "    return SwitchRegion()
    "else return s:codecompl
    return ''
endfunction
4

1 回答 1

1

<C-R>是一个插入模式命令,你不能简单地将它放在执行 Ex 命令的 Vimscript 函数中。相反,您必须使用:normal! i发出正常模式命令i才能重新进入插入模式。使用:execute能够使用<...>关键符号,你得到:

:execute "normal! i\<c-r>=12+34\<cr>"

也就是说,当您处于返回键的映射表达式中时(您似乎在这里),您不能使用:normal(文本被锁定),您应该只:return使用键:

:return "\<c-r>=12+34\<cr>"
于 2013-02-21T11:16:00.010 回答