我正在尝试将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会提示我并说
“您可以使用&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)
我将尝试将该键序列绑定到该函数并检查结果。
答案 0 :(得分:0)
尝试在没有init文件的情况下启动Emacs:emacs -Q
,看看是否可以重现问题。
我没有看到问题,Emacs 24.3在终端模式下。
您所看到的内容可能是ESC <up>
,相当于M-<up>
。
您是否打算输入“当我运行时M-x scroll-up-line
(而不是down
)?
我怀疑您处于某种模式,该模式为这些密钥提供本地绑定或次模式绑定,这会覆盖全局绑定。要测试它,请尝试处于基本模式的缓冲区。如果是这种情况,那么要覆盖覆盖,您还需要绑定该模式的键映射中的键。
如果你不能从emacs -Q
开始重新解决问题,那么递归地将你的初始文件(~/.emacs
)平分,直到找到罪魁祸首代码。
答案 1 :(得分:0)
似乎键在翻译中丢失了。
以openSuse方式种植forward-paragraph
:
(global-set-key [(meta down)] 'forward-paragraph)