【问题标题】:Emacs: why does keybinding with M-S-[letter] set mark?Emacs:为什么用 M-S-[letter] 键绑定设置标记?
【发布时间】:2012-04-11 13:23:03
【问题描述】:

我正在为 Emacs 中的基本移动试验新的绑定。借用this pageErgoEmacs,这个重新映射按预期工作:

(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-mode有关。当我禁用 cua 模式时,问题就消失了。不幸的是,禁用 cua 模式并不是一个理想的解决方案。

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

【问题讨论】:

    标签: emacs


    【解决方案1】:

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

    【讨论】:

    • 将 shift-select-mode 设置为 nil 无效。而且我很难摆脱cua。我关闭了 cua 模式并将滚动重新定义为向上滚动和向下滚动,而不是 cua- 版本;还有什么我需要做的吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多