代码之家  ›  专栏  ›  技术社区  ›  steglig

Emacs:获取可读的键盘宏

  •  14
  • steglig  · 技术社区  · 16 年前

    使用时 insert-kbd-macro 要保存一个命名的键盘宏,我会得到“不可读”的Lisp代码

    (fset 'ppsql
       (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([134217788 134217765 44 return 44 17 10 return 33 134217765 102 102 backspace 114 111 109 return 17 10 102 111 109 backspace backspace 114 111 return 33] 0 "%d")) arg)))
    

    我想要如下的东西:

    (fset 'move-line-down
          [?\C-a ?\C-k delete down ?\C-y return up])
    

    iirc i使用相同的方法来记录、命名和插入两个键盘宏: F3 , F4 , name-last-kbd-macro .

    是否可以获取可读格式的第一个宏?

    3 回复  |  直到 11 年前
        1
  •  13
  •   viam0Zah    16 年前

    Emacs中的键盘宏功能有两种模式: macros kmacros .前者以您喜欢的方式返回宏,后者提供lambda形式。所以,如果你打电话 name-last-kbd-macro 如果你调用 kmacro-name-last-macro ,你得到一个lambda形式。

        2
  •  1
  •   steglig    16 年前

    谢谢你!

    所以 命名 宏的值确定格式 插入 ?

    我做了更多的实验,发现 M-x insert-kbd-macro RET RET 会给我“符号形式”。

    反之 M-x insert-kbd-macro RET pp2sql RET 给出“labmda表单”(用 name-last-kbd-macro )

    现在我意识到我已经习惯了 命名最后一个kbd宏 在我之前的实验中…?

        3
  •  -3
  •   PanCrit    16 年前

    我从没见过第一种形式。第二种形式是我习惯的。是否尝试重新录制第一个宏,以查看如果确定录制,然后是名称,然后是插入,会发生什么情况?

    另一件要尝试的事情是“c-x”(调用kmacro start macro和“c-x”)kmacro end macro,而不是f3/f4,它在保持计数器方面做了一些无关的事情。也许简单的键盘宏命令可以更直接地工作。