2014-10-04 58 views
3

我在OS X終端中使用emacs 24.3,並且遇到了一些奇怪的事情。<tab> v。在emacs中的TAB

在markdown-mode.el中,tab鍵通過(define-key map (kbd "<tab>") 'markdown-cycle)綁定到鍵映射中的特定函數,但出於某種原因,我沒有註冊(儘管keymap的其他部分工作正常)。

什麼固定的,這是改變<tab>在上TAB。這在OS X終端中有些奇怪嗎?有沒有辦法來解決這個問題;我覺得這不應該發生。

+1

聽起來像降價模式中的錯誤。似乎模式應綁定'(kbd「TAB」)',而不是'(kbd「」)'。考慮向圖書館維護人員提交一份錯誤報告。 – Drew 2014-10-04 21:44:58

回答

3

我相信降價模式應該使用TAB,不<tab>

據我所知,<tab>是標籤鍵盤上的鍵TAB是控制我,或ASCII字符(書面\t\x09)。 Tab鍵沒有ascii值。

在GUI Emacs中,Emacs默認按Tab鍵(<tab>)並將其轉換爲C-i(TAB)。 Emacs可以區分Tab和C-i,但將Tab轉換爲C-i,除非您將<tab>專門綁定到其他(markdown-mode)。

在終端中,該終端轉換的Tab鍵,C-1(ASCII 9),和Emacs只能看到C-1。 Emacs無法區分這兩者,因爲它們都顯示爲C-i。

同樣的事情發生與<return> VS RET(C-M,ASCII 13)。

3

使用TABdefine-key應自動綁定任何事件鍵盤發出的標記「標籤」的關鍵,無論是ASCII字符TAB,也被稱爲C-i(控制+ i)或別的東西 - 包括什麼寫的Emacs作爲僞功能鍵<tab>

這可能無法在所有情況下自動工作。如果它不適用於您的特定鍵盤,請使用C-h k並點擊Tab鍵,找出它所綁定的內容。無論Emacs告訴你什麼是關鍵序列,嘗試綁定它。例如,如果它告訴您鍵序列是<foobar>,則使用(kbd "<foobar>")

但在大多數情況下,您只需使用(kbd "TAB")(或"\C-i"[control ?i])。