如何在vim中映射{Ctrl 0,-,=}键?

4

我的键盘布局(第二行):

`1...0-=Backspace

我想将函数调用映射到Ctrl+0-=

这是我创建的函数:

" it doesn't work
nnoremap <C-=>  :call IncFontSize(+1)<CR>

" it works
nnoremap <C-->  :call IncFontSize(-1)<CR>

" it doesn't work
nnoremap <C-0>  :call IncFontSize(0)<CR>

fun! IncFontSize(inc)
    if !exists('+guifont')
        return
    endif
    let s:defaultfont = 'Ubuntu Mono 12'
    if a:inc==0 || empty(&guifont)
        let &guifont = s:defaultfont
        return
    endif
    let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)+'.a:inc, '')
endfun

我该如何将函数调用映射到这些键上?
2个回答

8
请注意,在命令行模式下,按下 Ctrl-_ 会得到 ^_,但按下 Ctrl-0Ctrl-= 则不会有任何反应。
由于键盘输入的内部处理方式,区分这个以及许多其他键组合(如 Ctrl+LetterCtrl+Shift+Letter)今天很遗憾仍然不可能,即使在 GVIM 中也是如此。这是一个已知的痛点,并在 vim_dev 和 #vim IRC 频道上进行了各种讨论。
一些人(主要是 Paul LeoNerd Evans)想要解决这个问题(即使对于支持此功能的终端中的控制台 Vim),并提出了各种建议,参见 链接 但是截至今日,尚未出现任何补丁或志愿者,尽管许多人表示希望在未来的 Vim 8 主要版本中实现此功能。

1

找到一个解决方案:http://superuser.com/questions/226438/get-os-x-terminal-app-to-accept-ctrl-for-vim - Zheng Kai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接