Emacs / elisp:全局设置键绑定不对Meta- <down>或 - <up>?</up> </down>生效

时间:2013-10-08 19:26:24

标签: emacs key-bindings dot-emacs

我正在尝试将M-<up>M-<down>分别绑定到scroll-down-linescroll-up-line,如下所示:https://stackoverflow.com/a/16229080/562139

这就是我.emacs中的内容:

;; Key bindings
(global-set-key (kbd "M-g") 'goto-line)
;; Scroll line by line
(global-set-key (kbd "M-<down>") 'scroll-up-line)
(global-set-key (kbd "M-<up>") 'scroll-down-line)

问题: 滚动键绑定没有生效,而goto-line的滚动键绑定没有生效。

但是当我运行M-x scroll-down-line时,emacs会提示我并说

  

“您可以使用&lt; M-down&gt;”

运行命令

注意: 当我在迷你缓冲区中直接运行global-set-key (kbd "M-<down>") 'scroll-up-line)(global-set-key (kbd "M-<up>") 'scroll-down-line)时,绑定生效!但是,当我执行后者时,我似乎注意到了我的眼角,按下M-<up>实际上会发送类似ESC ESC-<up>的内容。

我很害怕。是什么给了什么?

注意:我在终端上运行emacs 24.3(通过OSX上的iTerm,Option键映射到ESC +),通过SSH连接到RHEL5虚拟机。)


更新

我按照this answer中的建议发现按M-&lt; up&gt;结果完全不同:

ESC <up> (translated from ESC M-[ A) runs the command
scroll-down-line, which is an interactive compiled Lisp function.

It is bound to <M-up>, ESC <up>.

(scroll-down-line &optional ARG)

我将尝试将该键序列绑定到该函数并检查结果。

2 个答案:

答案 0 :(得分:0)

  1. 尝试在没有init文件的情况下启动Emacs:emacs -Q,看看是否可以重现问题。 我没有看到问题,Emacs 24.3在终端模式下。

  2. 您所看到的内容可能是ESC <up>,相当于M-<up>

  3. 您是否打算输入“当我运行时M-x scroll-up-line(而不是down)?

  4. 我怀疑您处于某种模式,该模式为这些密钥提供本地绑定或次模式绑定,这会覆盖全局绑定。要测试它,请尝试处于基本​​模式的缓冲区。如果是这种情况,那么要覆盖覆盖,您还需要绑定该模式的键映射中的键。

  5. 如果你不能从emacs -Q开始重新解决问题,那么递归地将你的初始文件(~/.emacs)平分,直到找到罪魁祸首代码。

答案 1 :(得分:0)

似乎键在翻译中丢失了。

以openSuse方式种植forward-paragraph

(global-set-key [(meta down)] 'forward-paragraph)