在Emacs迷你缓冲区中使用参数调用命令

时间:2014-03-01 07:18:53

标签: emacs command interactive

我知道 M-x(执行扩展命令)允许用户通过输入其名称来调用Emacs中的命令。然而,这不允许我用参数调用命令,例如“落后字5”

我知道 C-5 M-b 会产生预期效果,但我正在寻找一般方法。

有谁知道怎么做?

谢谢, 丹尼

2 个答案:

答案 0 :(得分:2)

评估它: M - : (backward-word 5) RET

答案 1 :(得分:0)

@ abo-abo提供了一般答案:使用M-:

  1. 但是,如果您不仅对获得评估的副作用感兴趣,而且不仅仅是在粗略概述返回值,而是在 完全返回值 (无论其大小和复杂程度如何),然后香草Emacs M-:不是您想要的。

    为此,我将pp-eval-expression替换为eval-expression其键绑定(包括M-:),我也建议其他人使用此做法:

      

    (substitute-key-definition'eval-expression'pp-eval-expression global-map)

    漂亮打印返回值,你可以让它打印完整的值(没有省略号:...)。

  2. 此外,我在库pp+.el中提供了pp-eval-expression的修改版本。它具有以下优点:

    • 使用pp-read-expression-map
    • 读取完成
    • 输入时可以使用Emacs-Lisp模式缩进和完成键绑定。
    • 使用前缀arg,将结果值插入当前缓冲区中。
    • 使用负前缀arg,如果返回值是字符串,则将其插入缓冲区而不使用双引号(")。
    • 字体锁定Emacs-Lisp模式的返回值(语法高亮显示)。 (并且在显示期间emacs-lisp-mode-hookchange-major-mode-hook被禁止。)
    • 尊重新用户选项pp-eval-expression-print-lengthpp-eval-expression-print-level和标准选项eval-expression-debug-on-error。前者与类似的标准选项eval-expression-print-lengtheval-expression-print-level因为用例通常不同。
  3. 如果您使用库Icicles,那么您将获得与库pp+.el相同的优势 - 无需同时加载pp+.el