1

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

这就是我的.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)

问题: 滚动键绑定不生效,而 for 绑定goto-line

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

“您可以使用 <M-down> 运行命令”

注意: 当我运行global-set-key (kbd "M-<down>") 'scroll-up-line)(global-set-key (kbd "M-<up>") 'scroll-down-line)直接在 mini-buffer 中时,绑定生效!但是,当我做后者时,我似乎已经从眼角注意到,按下M-<up>实际上会发送类似ESC ESC-<up>.

我是狐狸精。是什么赋予了?

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


更新

我遵循了这个答案中的建议,发现按 M-<up> 会导致完全不同的结果:

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)

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

4

2 回答 2

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) 一分为二,直到找到罪魁祸首代码。

于 2013-10-08T19:52:51.933 回答
0

似乎关键在翻译中丢失了。

forward-paragraph以这种方式在 openSuse种下一个:

(global-set-key [(meta down)] 'forward-paragraph)
于 2013-10-09T09:52:12.797 回答