在Emacs中如何使用箭头快速选择文本

3
我正在使用GNU Emacs 23.2.1版本
这是我的init.el文件。
(cua-mode 1)               
(transient-mark-mode 1)    
(setq shift-select-mode t) 
(global-linum-mode 1)      
(show-paren-mode 1)        
(desktop-save-mode 1)      

所以,我按Shift键却得到了2C(对应">="),按Shift键加上2D(对应"<="),如何解决呢?

P.S.
Shift键加上cat -v:
^[[1;2D
Shift键加上cat -v:
^[[1;2C

我该如何正确映射这些键到相应的shift-left、shift-right键呢?

P.P.S.
抱歉,我忘记告诉你了,我也在使用screen。

den@playground:~/.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])
2个回答

6
这意味着 Emacs 和你的终端无法达成一致,对于各种按键代码所代表的含义存在差异。虽然还有更高级的方式来配置终端(使用特定于终端的文件),但为了让你能够开始使用,试着在你的 Emacs 初始化文件中添加类似下面这样的内容:
(define-key input-decode-map "\e[1;2D" [S-left])
(define-key input-decode-map "\e[1;2C" [S-right])

1
在我的“屏幕”中,未按下Shift键的箭头键发送与按下Shift键后相同的键码。在您开始类似于此类的操作之前,请确保您的情况不是这种情况。 - tripleee
@tripleee - 是的,有很多需要考虑的事情(终端、shell等),这就是让人感到沮丧的原因。有时候终端或shell会让你改变键码,这可以在那种情况下有所帮助。 - jtahlborn

2

这通常发生在你在控制台中运行emacs时。尝试将emacs作为图形程序运行,这应该不会成为问题。


是的,我正在通过ssh/mintty在我的服务器上运行它。抱歉 - 我无法使用X服务器,只能使用ssh。 - denys
1
那么我认为您不能使用这些键组合。如果我没记错,这些键将不会传递给emacs,而是会被终端停止,因为它没有足够的字符代码来发送它们。您可以做的是重新映射到其他内容,或通过SSH进行X转发,或使用tramp运行本地版本的emacs并远程编辑文件。 - Nicolas Dudebout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接