Emacs:为什么使用M-S- [letter]设置标记进行键绑定?

时间:2012-04-11 13:23:04

标签: emacs

我正在尝试在Emacs中进行基本移动的新绑定。从[{3}}和this page借用,此重新映射按预期工作:

(global-set-key (kbd "M-i")   'previous-line)
(global-set-key (kbd "M-k")   'next-line)
(global-set-key (kbd "M-j")   'backward-char)
(global-set-key (kbd "M-l")   'forward-char)

但定义Shift-Alt组合会产生不必要的副作用。

(global-set-key (kbd "M-I")   'cua-scroll-down)
(global-set-key (kbd "M-K")   'cua-scroll-up)
(global-set-key (kbd "M-J")   'backward-word)
(global-set-key (kbd "M-L")   'forward-word)

运行describe-key C-h k )表明绑定成功。并且这些绑定会按原样移动点,但由于某种原因,它会将标记设置在我的原始位置,并在移动点时为我提供突出显示的区域。

我该如何纠正?

编辑: 这与cua模式有关。当我禁用cua模式时,问题就消失了。不幸的是,禁用cua模式并不是一个理想的解决方案。

编辑: 这是Emacs中的一个错误。它被追踪为错误#11221,标题'cua-mode激活移位绑定的标记'。从邮件列表上的讨论来看,听起来会有一个修复cua-base.el。

2 个答案:

答案 0 :(得分:3)

它确实可能由shift-select-mode触发,但它看起来像一个错误:shift-select-mode应该注意命令绑定到移位键的事实。尝试在不使用CUA的情况下重现问题,然后请使用M-x report-emacs-bug报告。

答案 1 :(得分:2)

那是因为shift selection。您可以将shift-select-mode设置为nil来停用它。