映射<C-i>和<Tab>独立

  • 本文关键字:Tab 独立 C-i 映射 vim
  • 更新时间 :
  • 英文 :


我知道vim有一个与7位ASCII编码相关的wickness,但真正糟糕的是我不能用vim+Mintty:映射这些字符中的任何一个

" ^ <C-'> <C-1> <C-2> <C-3> <C-4> <C-5> <C-6> <C-7> <C-8> 
<C-9> <C-0> <C-i> <C-Tab> <C-S-Tab> ...

我也知道和在vim上是同一个字符,但我发现有一个使用set关键字的解决方法。例如,我可以用以下内容映射我的<C-Tab><C-S-Tab>

if s:is_cygwin
    " <C-Tab> Next buffer
    set <f26>=[1;5I
    map <silent> <f26> :bn<cr>
    imap <silent> <f26> <c-o>:bn<cr>
    vmap <silent> <f26> <c-c>:bn<cr>
    " <C-S-Tab> Previous buffer
    set <f27>=[1;6I
    map <silent> <f27> :bp<cr>
    imap <silent> <f27> <c-o>:bp<cr>
    vmap <silent> <f27> <c-c>:bp<cr>
endif    

我想知道<C-S-i><C-i>是否有类似的方法?

也许vim的一个分支支持任何键盘映射,或者mintty的一些选项允许调整字符编码。

我目前的解决方案非常糟糕。我使用AHK(自动热键)重新映射到另一个组合。

有人知道在Windows/Mintty/Vim上有更好的解决方法吗?

由于内部处理键盘输入的方式,不幸的是,即使在GVIM中,这在今天也不可能实现。某些组合键,如Ctrl+非字母组合键无法映射,Ctrl+字母组合键与2trl+1Shift>字母组合键也无法区分。(除非你的终端为它发送了一个不同的termcap代码,而大多数都没有。)在插入或命令行模式下,尝试键入组合键。如果什么都没有发生/插入,则不能使用该组合键。这也适用于<Tab>/<C-I><CR>/<C-M>/<Esc>/<C-[>等。(只有<BS>/<C-H>例外。)这是一个已知的痛点,也是关于vim_dev和#vim IRC频道的各种讨论的主题。

一些人(最重要的是Paul LeoNerd Evans)希望解决这个问题(即使是支持这个问题的终端中的控制台Vim),并提出了各种建议。http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

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

最新更新