2014-09-29 50 views
2

我知道VIM具有與7位ASCII編碼,但一個wickness真正的壞事,我不能映射任何字符,這些用Vim + Mintty的:地圖<C-i>和<Tab>獨立

"^<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> ... 

我也知道,並且是seens,但是我發現使用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>的方式做一些事情similart?

或許有VIM的叉支持任何鍵盤映射或用於mintty一些選項,允許來調整字符編碼。

我目前的解決方案是非常難看。我使用AHK(AutoHotKeys)重新映射到另一個組合。

是否有人知道什麼更好的解決方法在Windows/Mintty/Vim的工作?

回答

1

由於該鍵盤輸入是內部處理的方式,今天這個不幸的是,不是一般的可能,甚至在GVIM。一些組合鍵,像按Ctrl +非字母不能被映射,並按Ctrl +信與按Ctrl ++信無法區分。 (除非你的終端發送了一個明確的termcap代碼,但大部分都沒有。)在插入或命令行模式下,嘗試輸入組合鍵。如果沒有任何事情發生/插入,則不能使用該組合鍵。這也適用於<Tab>/<C-I><CR>/<C-M>/<Esc>/<C-[>等(僅例外是<BS>/<C-H>)。這是一個已知的痛點,並在vim_dev各種討論和#vim IRC頻道的主題。

有些人(最重要的是保LeoNerd埃文斯)要解決這個問題(即使控制檯Vim的支持此終端),並已飄來各種建議,CP。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

但截至今日,還沒有補丁或志願者尚未出面,儘管許多人表示希望在未來的Vim 8主要版本中擁有此版本。

+0

你聽說過Neovim? – nowox 2014-09-30 12:40:50

+0

@coin:是的。這大概會消除這個限制,但是正在進行中。如果它具備所有你需要的功能,交換也是一個解決方案。 – 2014-09-30 12:50:11

相關問題