2012-10-17 29 views
1

某些在GUI模式下工作的emacs鍵盤綁定在終端模式下不起作用because the terminal only knows how to send ASCII control codes。當我將一個鍵綁定到一個非ASCII控制代碼時,有沒有辦法讓emacs發出抱怨,所以我會不小心做到這一點?我只偶爾在終端上運行emacs,通常只能遠程運行,通常只是因爲某些事情被破壞了,這意味着我最終會在最糟糕的時候發現這種尷尬。我也有經驗的時候,特別是從一個操作系統到另一個(例如Solaris - > Linux)遠程處理,甚至修改鍵被重新映射(esc < - > ctrl獲取交換,或者右鍵單擊工作,但左ALT鍵「T)。有什麼辦法來檢測這種情況何時發生,並且適當地交換我的鍵盤綁定?在emacs中不能在終端模式下工作的塊綁定?

基本上說:它很糟糕,每次我在終端中使用emacs時,都會遇到與GUI不一致的體驗,我該如何更改emacs的使用以防止出現這種情況。

回答

1

我不知道這樣做的好方法:其一,終端只能發送ASCII控制代碼是不正確的,因爲它們可以通過轉義序列編碼幾乎任何東西(例如,xterm發送特殊轉義例如,CM-up的序列,Emacs然後識別)。因此,根據終端能夠發送給Emacs的事件集合(以及哪些Emacs可以識別)取決於終端。

如果你想要真正安全,你可以限制自己的綁定鍵位序列被描述爲一個字符串(不是一個向量,而不是通過​​構建的東西),它基本上只含有ASCII字符(包括控制序列)與Meta結合。

+0

您是否知道當我以遠程方式登錄並在熱情中運行emacs時,是否可以找出什麼是或不支持的?例如,當我在C- /中進行遠程控制時,它不起作用(它被認爲與C-_相當),但我不知道如何檢測這個事情,除了通過反覆試驗我所有的快捷方式,以及是否有辦法找到我需要重新映射的快捷方式的完整列表,我至少可以爲我的遠程工作設置進行修復。 –

+0

要知道什麼可行,什麼不可行,您需要找出您正在使用的終端仿真器,然後查看其文檔,自定義和/或源代碼。你可以知道'C- /'對於'M-:「\ C- C- /」RET「是有風險的,它會告訴你它不是一個有效的字符串,即它不是一個ASCII控制鍵。 – Stefan

+0

啊,我希望能夠發現emacs lisp + termcap魔術的一些組合,它們將能夠解決這個問題。可能試着滾動我自己的,但它需要一段時間,因爲我知道目前有關termcap的傑克。 –

相關問題