2012-07-30 119 views
1

我使用GNU Emacs的23.2.1
我init.el移箭頭選擇在Emacs

(cua-mode 1)    
(transient-mark-mode 1)  
(setq shift-select-mode t) 
(global-linum-mode 1)  
(show-paren-mode 1)   
(desktop-save-mode 1)  

所以,與其選擇我得到移=>,2D上的Shift鍵< =等2C 如何解決這個問題?

P.S.
貓-v用於換檔< =
^ [[1; 2D
貓-v用於換檔=>
^ [[1; 2C

我怎樣才能正確地映射到那些左移位鍵,右移對應?

P.P.S.
對不起。我忘了。我也在使用屏幕。

[email protected]:~/.emacs.den$ echo $TERM 
screen 

解決方案:

(define-key input-decode-map "\e[1;2D" [S-left]) 
(define-key input-decode-map "\e[1;2C" [S-right]) 
(define-key input-decode-map "\e[1;2B" [S-down]) 
(define-key input-decode-map "\e[1;2A" [S-up]) 
(define-key input-decode-map "\e[1;2F" [S-end]) 
(define-key input-decode-map "\e[1;2H" [S-home]) 

回答

6

這意味着emacs和您的終端不同意各種關鍵代碼的含義。有配置終端(終端特定的文件)更先進的辦法,但讓你開始,嘗試添加像這樣到Emacs init文件:

(define-key input-decode-map "\e[1;2D" [S-left]) 
(define-key input-decode-map "\e[1;2C" [S-right]) 
+1

在我的屏幕中,未移位的箭頭鍵發送與移位鍵相同的鍵碼。在你開始這樣的事情之前,你想確保這不是你的情況。 – tripleee 2012-07-31 03:16:48

+0

@tripleee - 是的,有各種你需要考慮的事情(終端,你的外殼等),這是令人沮喪的。有時終端或shell會讓你改變鍵碼,這可以在這種情況下提供幫助。 – jtahlborn 2012-07-31 12:56:21

2

當您運行在一個控制檯的emacs這通常發生。嘗試將emacs作爲圖形程序運行,這不應該成爲問題。

+0

是的,我在我的服務器上通過SSH運行它/ mintty。對不起 - 我無法使用X服務器。只有ssh。 – denys 2012-07-30 14:10:52

+1

然後我認爲你不能使用這些組合鍵。 IIRC這些密鑰不會傳遞給emacs,但會被沒有足夠字符代碼的終端發送。你可以做的是重映射到別的東西上,或者通過SSH進行X轉發,或者使用tramp遠程運行本地版本的emacs和編輯文件。 – 2012-07-30 14:16:18