2017-09-04 109 views
1

這是一件很難發現的事情。在Spacemacs(或Emacs)中,是否有可能讓一個給定的組合鍵執行任何其他組合鍵應該執行的操作?在Spacemacs(或Emacs)中,是否可以將密鑰綁定到其他密鑰?

換句話說,是否有可能讓F5鍵始終執行,無論組合C-c C-c應該做什麼?例如:

(global-set-key [remap (kbd "F5")] (kbd "C-c C-c")) 

讓我舉一個具體的例子來說明問題。密鑰組合C-c C-c通常用於將當前緩衝區的整個代碼發送給解釋器/控制檯,以便在代碼駐留在.py文件中時將緩衝區的代碼發送給Python解釋器,或者將其發送到包含包的R控制檯ESS在.R文件中。

現在,假設人們想讓F5鍵設置爲這兩種語言,甚至更多。一個明顯的解決方案是簡單地實現每個包的不同鍵綁定。但是,如果可以簡單地說:只要按下了「F5」,就會導致與「C-C C-C」被調用相關的任何命令。

有沒有可能有這樣的事情?我特別感興趣的是爲Spacemacs做這件事,但當然對於Emacs更通用的答案是可以接受的。

回答

1

嘗試

(define-key key-translation-map [f5] (kbd "C-c C-c")) 

應該解決您的問題。

+0

幾乎完美的解決方案!需要注意的是,出於某種原因,如果新的組合鍵使用「超級」或「超級」鍵,則它不起作用。例如:'(define-key key-translation-map [H-f5](kbd「C-c C-c」))' – Louis15

+0

你確定你正在拼寫按鍵嗎?我總是做'C-h k '看看幫助/迷你緩衝區給了什麼,然後把它放在'kbd'中。例如。使用'(kdb「」)'爲'super-F5'(我不能舉一個超級示例,因爲我沒有超級)。 – jpkotta

相關問題