0

我有以下内容:

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

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

目前我有另一个我真的不想包含在函数调用中的命令。我<c-r>=在插入模式下使用,因为它不会创建撤消点,并且除了这个限制之外它的效果很好。

我试过执行,但它不工作。

4

2 回答 2

1

You can do something like this:

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

The command isn't the simplest:

  • here we ask Vim to execute some keys after leaving <c-r>=
  • use <lt> to allow expanding of <cr> in command-line mode instead of in <c-r>=
  • use ?: operator to ignore value returned by feedkeys() function

See :help feedkeys().

于 2012-08-24T05:59:46.757 回答
0

您可以基于我对您最近类似问题的回答。这是完全相同的问题:就像:call,自定义 Vim 命令不返回任何内容,但<C-R>需要一个返回内容的表达式:

function! SingleCompileWrapper()
    SCCompile
    return ''
endfunction

map! <F6> <C-R>=SingleCompileWrapper()<CR>
于 2012-08-24T07:28:18.077 回答