Emacs手册仅提供了为单个命令设置绑定的示例.如何对一系列命令执行此操作.具体如下.
这实际上是单行滚动.
下面提供了一种用于定义命令序列的键绑定的解决方案。总结如下:
创建指定名称的键盘宏
将宏绑定到组合键
您可以将此代码包含到您的init.el文件中
(fset 'scroll-up-step
(lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([21 49 prior] 0 "%d")) arg)))
(fset 'scroll-down-step
(lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([21 49 next] 0 "%d")) arg)))
(global-set-key (kbd "M-<up>") 'scroll-up-step)
(global-set-key (kbd "M-<down>") 'scroll-down-step)
(global-set-key (kbd "\e <up>") 'scroll-up-step)
(global-set-key (kbd "\e <down>") 'scroll-down-step)
Run Code Online (Sandbox Code Playgroud)
详细步骤:
开始宏定义
<F3> 启动KBD宏定义
C-u 1 prior 您想要绑定的命令序列
<F4> 结束KBD宏定义
为最近的宏指定一个自定义名称(无冲突!)
C-x C-k n scroll-up-step
对其他自定义命令执行相同的操作
<F3>
C-u 1 next
<F4>
C-x C-k n scroll-down-step
Run Code Online (Sandbox Code Playgroud)
笔记:
先验 = PgUp / fn+up (Macbook)
下一个 = PgDown / fn+down (Macbook)
在 Emacs 中打开 init.el
C-x C-f </path/to/init.el>(通常是“~/.emacs.d/init.el”)
将宏 lisp 定义附加到 init.el 文件
M-x insert-kbd-macro RET scroll-up-step RET
M-x insert-kbd-macro RET scroll-down-step RET
Run Code Online (Sandbox Code Playgroud)
将自定义命令的键绑定附加到 init.el 文件
(global-set-key (kbd "M-<up>") 'scroll-up-step)
(global-set-key (kbd "M-<down>") 'scroll-down-step)
(global-set-key (kbd "\e <up>") 'scroll-up-step)
(global-set-key (kbd "\e <down>") 'scroll-down-step)
Run Code Online (Sandbox Code Playgroud)
您会注意到,我为单个绑定包含了两次键绑定定义。这是因为绑定与 Meta 键相关。元键在 GUI 模式下被描述为 M,但终端仍将其视为 ESC(即使按下 alt/option 键)。因此我定义了它两次,以便它可以在 Emacs 的 GUI 和终端模式下工作。
这可能不是为命令序列定义键绑定的最快方法。但它确实有效。我想知道是否有人有更简单的解决方案(如果有的话)。