2011-08-29 22 views
4

在我的emacs配置文件中,我創建了一個次要模式,這樣我就可以重新綁定密鑰,而無需爲每個主要模式分別重新綁定它們。從RET中解除C-m

這樣做,我已將C-m重新映射到kill-ring-save。但是,默認情況下,emacs C-mRET相同。因此,當我在我的.emacs以下:

(define-key my-minor-mode-map (kbd "C-m") 'kill-ring-save) 

當我按下回車鍵,kill-ring-save執行

我應該如何去修復我的配置文件,這樣我就不會遇到這些問題?

我也打開採取不同的方法來創建一個在所有主要模式下工作的密鑰綁定。

編輯︰我在圖形模式下運行

回答

8

這將無法在非圖形模式emacs中工作。當在終端中運行時,返回C-m不可區分。

如果您沒有運行終端模式emacs,只需分別重新綁定<return>C-m即可。

例如:

(cond (window-system ; ensure not running in a terminal 
     (local-set-key (kbd "<return>") 'newline) 
     (local-set-key (kbd "C-m") 'kill-ring-save))) 
+0

我在GUI模式下運行,但因爲'「CM」'相同'enter'在Emacs什麼我做(包括對你的解答變化)有一直在爲我工作。 – pseudosudo

+1

嘗試'C-h k '來顯示返回的鍵綁定。它應該最初顯示'RET(從翻譯)運行...'。重新綁定後,它應該只是說'運行...'。一旦''不再被轉換爲'RET',你應該能夠獨立地綁定它們。 – ataylor

+1

嘗試使用'-q'啓動Emacs以確保您的配置沒有任何干擾。然後將ataylor的代碼粘貼在scratch-buffer中並評估它。當我在Ubuntu的GNU Emacs 23.2.1中這樣做時,一切都按預期工作(除了「new-line」應該是「newline」這一事實外)。 – Thomas