我正在尝试将M-<up>
和M-<down>
分别绑定到scroll-down-line
和scroll-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 会提示我并说
"您可以使用
运行命令">
注意:当我直接在迷你缓冲区中运行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,选项密钥映射到 ESC+(,通过 SSH 到 RHEL5 虚拟机。
更新
我遵循了这个答案中的建议,发现按 M-
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)
我将尝试将该键序列绑定到函数并检查结果。
-
尝试在没有 init 文件的情况下启动 Emacs:
emacs -Q
,看看是否可以重现该问题。我没有看到问题,Emacs 24.3 处于终端模式。 -
你短暂看到的大概是
ESC <up>
,相当于M-<up>
。 -
您是否可能打算键入"当我运行
M-x scroll-up-line
(而不是down
(时"? -
我怀疑您处于某种模式,该模式为这些键提供了本地绑定或次要模式绑定,这会覆盖全局绑定。要对此进行测试,请尝试在基本模式下的缓冲区中进行测试。如果是这种情况,则要覆盖该覆盖,您还需要在该模式的键盘映射中绑定密钥。
-
如果您无法从
emacs -Q
开始重现问题,则递归地平分您的 init 文件 (~/.emacs
(,直到找到罪魁祸首代码。
似乎钥匙在翻译中丢失了。
以这种方式在openSuse上种植了forward-paragraph
:
(global-set-key [(meta down)] 'forward-paragraph)