2014-08-30 31 views
4

我有幾個按鍵(如<M-[>imap'd來執行我的.vimrc中的某些操作,例如,vimrc:imap Alt +重音字符

imap <M-[> <C-o>:silent !audtool --playback-seek-relative -3<CR> 

用於在打字時尋求大膽(用於轉錄錄製的語音)。我想爲捷克鍵盤佈局做同樣的事情,在這種情況下恰好有ú(u-sharp)。所以我嘗試了明顯的

imap <M-ú> <C-o>:silent !audtool --playback-seek-relative -3<CR> 

這是行不通的。這裏有什麼解決方案?嘗試:help key-notation和谷歌沒有成功。僅在gvim(而不是終端)中工作的解決方案沒問題。

回答

0

Vim有一個古老的方法來處理輸入 - 它被表示爲一個字節(字符)隊列,而不是一個按鍵序列隊列。我想,字符<M-ú>(是的,它應該是一個字符)只是不存在,就像<C-1>沒有。您可以通過在輸入模式下按<C-v><M-ú>來確保它 - 一個普通的ú或者不會輸入任何內容。所以沒有辦法將<M-ú>映射到任何東西。

但是!因此,Vim在設計上不能很好地處理與基本QWERTY不同的外部佈局,它提供了自己的(內部)機制來支持第二種佈局。

如果你這樣做:set keymap=czech,你就可以通過<C-6>切換輸入語言Vim內部,而忘記了測繪混亂 - 在映射<M-[>(以及z2等)將意味着在這兩種佈局一個關鍵的和絃。

順便說一句,這實際上是充分使用Vim的一種語言的唯一方法,該語言的佈局與QWERTY(例如西里爾語)完全不同。

+0

那麼,因爲我在gvim中運行並且鍵盤佈局是由X11處理的,這是否意味着我將用gvim-only鍵盤映射替換它,並在不同鍵之間進行切換?這聽起來很尷尬。 – eudoxos 2014-08-31 21:28:04

+0

@eudoxos是的,這很尷尬,但是是真的。我相信一個這樣做的人(以及許多俄羅斯Vim用戶都這樣認爲),我可以向你保證,它比起初看起來不那麼令人不安--Vim已經有很多「笨拙的」捷徑: - )當然,您可以將「」重新映射到任何你想要的。 – 2014-08-31 21:57:24

+0

@eudoxos另外,我認爲,值得一提的是'langmap'在這種情況下不會對Meta有幫助。 (儘管如果你還沒有使用它,它可能對你有用。) – 2014-08-31 22:06:29