2011-11-22 52 views
15

我注意到iTerm2提供了使用「Option key as + ESC」(或作爲元,但顯然已過時)的非常方便的功能。在iTerm2 /終端vim中的「M-」綁定不起作用

我嘗試了它們,並且選項鍵在Bash(set -o emacs模式)和Emacs中按預期工作,但在Vim中沒有。因此,我不能使用任何「M-」綁定。 我發現的是:

  • 如果我設置選項「+ ESC」,VIM只是瞭解ESC +鍵,不知道我其實是元關鍵。
  • 如果我將選項設置爲「meta」,用「option」修改的鍵的行爲就像沒有修飾符一樣(不知道如何正式測試vim從我正在鍵入的鍵組合中知道什麼)。

「M-」映射在MacVim(7.3.53)中完美工作,但這不在控制檯之外,也不在此問題的範圍之內。

我感興趣的是如何使這些映射在iTemm2或Terminal下的Vim中工作。

我的規格

  • MAC OS X獅子10.7.2
  • iTerm2 1.0.0.20111020
  • VIM @ 7.3.107_0 + python26 [雖然MacPorts的]
+2

有時人們使用術語「元」有一個非常狹隘的解釋是指「一個高位設置的ASCII字符「;然而,更一般地說,「元」可以意味着使用高位或用ESC前綴。我從措辭中認爲「Option as Meta」的意思是「設置高位」,這與使用UTF-8(或其他8位)編碼不兼容。現代終端仿真器通常默認爲UTF-8,並且需要使用ESC前綴作爲「Meta」。 Mac OS X Terminal的「選項作爲元鍵」選項僅意味着「帶ESC前綴」。 –

+1

http://stackoverflow.com/a/15399297/2355112有關於在Mac中映射「Option + char」的解決方案。 – oozzal

回答

8

我已經下載了最新的iTerm2並嘗試查看它發送給Vim(i<C-v><M-a>)的內容以及如何設置:

  • 選項,選項:

    Vim的打印æ這是正常的和預期我的法語鍵盤

  • 選項作爲元上:

    的Vim在那裏停留,等待着什麼即將發生。沒有打印。如果我依次按Option和a,我只能獲得a。按Option和a以某種隨機順序可能會打印á,這很奇怪,完全出乎意料。

  • 選項爲+ ESC:

    Vim的打印^[a這意味着 「轉義字符後的字符是」。

從它出現Vim會永遠得到<M->沒有一些假設性的黑魔法這些測試。

如果你堅持「選項,+ ESC」,似乎你將不得不<M-something>映射更改所有的自定義,以<Esc>something。這可能會起作用,但它會使任何非英語語言的散文變得很痛苦。

我做什麼:我離開Option鍵,因爲它是如此,我可以很容易地鍵入像œ…«»字符,我用<Leader>(映射到,,看:help mapleader)爲我所有的自定義映射。

這裏的一些人喜歡將它保留爲插件,並提倡更簡單和更安全的方法。

inoremap <leader>, <C-x><C-o> "my way (copied elsewhere) 
inoremap ,, <C-x><C-o>  "another way 
+1

準確地說。 Vim從來沒有得到任何''組合。問題是我有幾個插件使用'M-'綁定,並且插入這些插件很不方便。也許有一個vim補丁來欺騙它將一個非常快速的Esc +鍵轉換爲''? – Dan

+2

另外我想繪製一些像''和''這樣的東西來完成Eclipse中的Alt +(up | down)操作(即將行/行移過上面/下面的行)。如果我要映射'Esc +(j | k)',那麼退出插入模式並真正按下其中一個移動鍵時會很痛苦...... – Dan

+0

您能否列出需要''的插件? – romainl

4

我離開了我的選擇鍵來充當正常和發現的Vim看到他們爲<T-綁定。因此,舉例來說,我有這樣的映射設置在我的.vimrc移動到插入模式時一個單詞的結尾:

noremap! <T-Right> <C-o><Right>;