2016-02-13 33 views
2

我想爲全部模式設置多個鍵綁定。我知道有一些Emacs鍵綁定前綴是爲用戶「保留」的,但是有一個鍵綁定前綴在所有不同類型的模式中都是「安全」的嗎?什麼是「安全的」Emacs用戶密鑰綁定命名空間使用?

+0

假設你說作爲一個用戶,而不是一個包的作者,一個方法我已經找到了豐碩的就是挑選具有全球性的定義,我不使用過多的鍵(例如,'Cz'的最小化)並重新將其作爲全局前綴。我通常會將我移動的密鑰推到前綴中(例如,將「C-z C-z」或其他)放在最小位置,這樣我仍然可以訪問它。 –

回答

1

爲誰安全?庫或用戶?

請參閱Elisp手冊,節點Key Binding Conventions瞭解哪些按鍵是爲用戶,主要模式和次要模式保留的。

因爲你不會說你正在做什麼,我們不可能猜測你的問題屬於哪個類別。

至於前綴鍵,你可以看到,你不應該使用C-cC-h<f5>指望通過<f9>,如果你希望你的前綴鍵在所有情境是「安全」。

+0

用戶安全。一個鍵綁定命名空間,我可以將鍵綁定定義爲用戶,而不用擔心它會與默認的鍵綁定或我可能使用的模式的鍵綁定衝突。 – Ana

+0

**用戶**可以定義*他喜歡的任何*鍵綁定。要知道給定的鍵是全局默認定義還是給定模式,唯一的方法是詢問Emacs:「C-h k」(在該模式下)。否則,如我所說,您可以從Elisp手冊的Key Bindings Conventions部分獲得一些指導。 – Drew

0

正如@drew指出的那樣,查看手冊中的提示部分,以獲得關於鍵綁定約定的一些指導。它可以是一個有點挑戰性的工作在哪裏綁定的東西,尤其是當你不想可能與標準綁定干擾或最終不得不您的綁定陰影等

的問題的問題是,在回答這個類型關鍵綁定非常符合個人品味。例如,我看到許多建議,你應該做的第一件事是重新定義大寫鎖定鍵爲一個ctrl鍵。這似乎是一個很好的建議,因爲ctrl鍵往往很難在關鍵的和絃組合中按下,並有可能產生各種應變問題。但是,我不這樣做,因爲我似乎沒有問題,Ctrl是它在哪裏,更重要的是,我想爲我的左手和右手使用一個Ctrl鍵。我發現只有一個ctrl鍵的鍵盤比鍵低很多,只有我的小指才能訪問!

在這方面很難提出建議的另一件事是您在不同平臺和不同桌面環境中獲得的變體。幾乎所有的平臺現在都有一定程度的鍵盤快捷鍵機制。問題在於,在某些情況下,各種組合鍵將被底層操作系統或更常見的桌面環境「偷走」。這通常意味着要獲得理想的emacs環境,您通常還需要調整操作系統或桌面環境。

如果我描述解決此問題的方法,可能會有所幫助。它不會爲您提供確切的或具體的答案,但它可能會爲您提供一些想法,幫助您根據自己的情況找到最合適的解決方案。

  • 我在Linux下運行Emacs和OS X.我不使用Windows和Windows下從未運行的Emacs。

  • 我嘗試爲我的密鑰綁定使用一種方案,這些方案在不同的環境中工作相同。但是,我的方法在不斷髮展。我剛剛剛開始使用OSX,它需要我改變我的方案以提高跨平臺的一致性。

  • 有兩個包,我覺得很有幫助,當試圖解決這個問題。兩者都可以通過MELPA獲得。免費密鑰和綁定密鑰包。免費密鑰包可以顯示哪些密鑰可用,並且綁定密鑰有一個非常有用的命令describe-persoanl-keybindings,它顯示了你綁定了哪些密鑰,並且在某些情況下顯示了綁定密鑰的用途。我覺得這對於計劃和診斷問題是一個非常有用的命令。

  • 最初,我的方法是找到一個我很少或從不使用的命令的全局鍵綁定,例如C-z => suspend-frame或M-`=> tmm-menu-bar並取消定義它。然後,我會將這些鍵定義爲我個人鍵盤映射的前綴鍵,並在其下定義鍵。

的優勢,這種方法是,我可以相當有信心,沒有什麼會引起我的綁定被隱藏或得到重新定義,我的所有綁定都依賴於一個單獨的前綴。

  • 我現在正在試驗的東西是使用超級和超級修飾符。特別是,在大多數鍵盤上,超級修改器已經變得很容易被訪問,現在在大多數Linux發行版中配置都是微不足道的。關鍵位置也接近OSX下「option」鍵的位置。

使用這些密鑰的唯一問題是它們經常被操作系統或桌面環境使用。在某些情況下,這很容易將我們固定在操作系統或桌面環境首選項機制上,但在其他情況下,似乎關鍵綁定與操作系統或桌面環境緊密耦合,並且無法對其進行更改。我發現的唯一解決方案是進行一些試驗和錯誤。然而,一旦你有它的排序,任何emacs庫或功能將不可能打破你的綁定,不太可能你打破你不知道的東西。極其有用且經常被忽視的改性劑IMO。

  • 最後,請記住C-h k - 當試圖使用這些東西時,這個鍵是必不可少的。