是否可以使用<c-r> =使用VIM命令?</c-r>

时间:2012-08-24 04:22:57

标签: vim

我有以下内容:

map  <F6> :SCCompile<cr>
map! <F6> <c-r>=SingleCompile#Compile()<cr>

我也想在第二个映射中使用:SCCompile,这可能吗?

目前我有另一个命令,我真的不想在函数调用中包装。我在插入模式下使用<c-r>=,因为它不会创建撤销点,并且除了此限制之外它可以正常工作。

我已经尝试了execute,但它无效。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

map  <F6> :SCCompile<cr>
map! <F6> <c-r>=feedkeys("<c-o>:SCCompile\<lt>cr>")?'':''<cr>

命令不是最简单的:

  • 这里我们要求Vim在离开<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>