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

时间:2012-05-21 04:30:04

标签: mapping keyboard-shortcuts vim ubuntu-12.04

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

` 1 ... 0 - = 退格

我想将函数调用映射到 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 个答案:

答案 0 :(得分:7)

请注意,在命令行模式下, Ctrl - _ 会导致^_,但 Ctrl - 0 Ctrl - = 什么都不产生。

由于键盘输入在内部处理的方式,区分它以及许多其他组合键(例如 Ctrl + Letter Ctrl <遗憾的是,/ kbd> + Shift + Letter ,即使在GVIM中也是如此。这是一个众所周知的痛点,也是关于vim_dev和#vim IRC频道的各种讨论的主题。

有些人(最重要的是Paul LeoNerd Evans)希望解决这个问题(即使是支持Vim的终端中的控制台Vim),并提出了各种提案,cp。 link

但截至今天,尚未有任何补丁或志愿者挺身而出,尽管许多人表示希望在未来的Vim 8主要版本中有这个。

答案 1 :(得分:1)

http://vim.wikia.com/wiki/Fast_window_resizing_with_plus/minus_keys

只有+- ......没有别名

:nmap + :echo "hello world"<CR>

这是你想要的吗?