如何在Emacs中为命令序列设置单键绑定

如何在Emacs中为命令序列设置单键绑定,emacs,emacs24,Emacs,Emacs24,Emacs手册只有一个为单个命令设置绑定的示例。如何对一系列命令执行此操作。具体如下 [M-down]至[C-u 1 C-v] [M-up]至[C-u 1 M-v] 这实际上是单行滚动。您可以用于该任务。该链接基本上解释了如何操作,为了完整起见,以下是操作方法: 点击C-x(开始录制键盘宏 执行命令应该执行的操作(即执行命令、点击键等) 点击C-x)停止录制键盘宏 执行M-x name last kbd macro以命名上次定义的键盘宏(即刚才定义的键盘宏) 执行M-x insert kbd

Emacs手册只有一个为单个命令设置绑定的示例。如何对一系列命令执行此操作。具体如下

  • [M-down]至[C-u 1 C-v]
  • [M-up]至[C-u 1 M-v]
这实际上是单行滚动。

您可以用于该任务。该链接基本上解释了如何操作,为了完整起见,以下是操作方法:

  • 点击
    C-x(
    开始录制键盘宏
  • 执行命令应该执行的操作(即执行命令、点击键等)
  • 点击
    C-x)
    停止录制键盘宏
  • 执行
    M-x name last kbd macro
    以命名上次定义的键盘宏(即刚才定义的键盘宏)
  • 执行
    M-x insert kbd macro
    要在点处插入最后定义的宏的代码,请将其复制到计算机中
  • (全局设置键(kbd“M-n”)'我的宏)
    放入(假设您将宏命名为
    我的宏
  • 利润
  • 找出绑定到的命令(函数)
    C-v
    C-hkc-v
    。答复:
  • C-v运行命令scroll up命令,这是一个交互式命令
    在window.el中编译Lisp函数。
    它绑定到C-v。
    (向上滚动命令和可选参数)
    向上滚动所选窗口的文本参数行
    
    C-u 1在这里做什么?告诉
    C-v
    向上滚动1行

    因此,您希望调用
    向上滚动命令
    ,并向其传递一个1:
    (向上滚动命令1)
    ARG

  • 如何定义自己的命令来执行此操作

    (defun my-scroll-up-1-line ()
      "Scroll up one line."
      (interactive)
      (scroll-up-command 1))
    
    请参阅Elisp手册,节点

  • 并将其绑定到
    M-n

    (global-set-key (kbd "M-n") 'my-scroll-up-1-line)
    
    请参阅Emacs手册,节点


  • 为命令序列定义键绑定的解决方案是 下文提供。总结如下:

    • 创建具有指定名称的键盘宏

      • 向上滚动步骤:C-u 1之前
      • 向上滚动步骤:C-u 1下一步
    • 将宏绑定到组合键

      • M-
        (全局设置键(kbd“M-”)(kbd“C-u 1”)
        会更简单,但不一定更好。
        <F3>
        C-u 1 next
        <F4>
        C-x C-k n scroll-down-step
        
        M-x insert-kbd-macro RET scroll-up-step RET
        M-x insert-kbd-macro RET scroll-down-step RET
        
        (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)