我有以下内容:
map <F6> :SCCompile<cr>
map! <F6> <c-r>=SingleCompile#Compile()<cr>
我也想在第二个映射中使用:SCCompile
,这可能吗?
目前我有另一个命令,我真的不想在函数调用中包装。我在插入模式下使用<c-r>=
,因为它不会创建撤销点,并且除了此限制之外它可以正常工作。
我已经尝试了execute,但它无效。
答案 0 :(得分:1)
您可以这样做:
map <F6> :SCCompile<cr>
map! <F6> <c-r>=feedkeys("<c-o>:SCCompile\<lt>cr>")?'':''<cr>
命令不是最简单的:
<c-r>=
<lt>
允许在命令行模式下扩展<cr>
而不是<c-r>=
?:
运算符忽略feedkeys()
函数请参阅:help feedkeys()
。
答案 1 :(得分:0)
你可以根据我最近的similar question的答案。这是完全相同的问题:与:call
一样,自定义Vim命令不会返回任何内容,但<C-R>
需要一个返回内容的表达式:
function! SingleCompileWrapper()
SCCompile
return ''
endfunction
map! <F6> <C-R>=SingleCompileWrapper()<CR>