【问题标题】:Emacs: is there a way to pass a variable or a string into a M-x command?Emacs:有没有办法将变量或字符串传递给 M-x 命令?
【发布时间】:2010-02-11 13:04:59
【问题描述】:

我有一个名为 go-to-url 的命令,我在我的 lisp 代码中调用它,它会打开一个网页,我只是将一个值字符串传递给它:

(go-to-url "www.yahoo.com")

不过,最好在 M-x 命令行中使用此功能。有没有办法做到这一点?我试过的都没有用

【问题讨论】:

    标签: emacs ide editor


    【解决方案1】:

    您将使用交互式表单:

    (defun go-to-url (url)
      (interactive "sURL: ")
      (do-your-stuff url))
    

    这样,您可以在 lisp 中和 M-x: go-to-url 中使用 go-to-url,系统会提示您输入参数。

    另请参阅我对您其他问题的回复:Emacs: Is there a way to create a interactive script using Emacs?

    【讨论】:

    • 嘿丹尼尔,感谢您对我的两个问题的答复,这真的很有帮助,所以我可以用这种方法用 1 块石头杀死 2 只鸟。非常感谢。当我希望今天晚些时候有时间时,我会回到另一个问题。刚刚忙于工作。不过谢谢,这将为我节省一些时间:-)
    【解决方案2】:

    已经有一个函数“browse-url”,它会提示您浏览该网址,或者您可以编辑/创建一个。

    对于接受数字参数的函数,您也可以使用 C-u 然后键入您想要传递给您执行的命令的值。

    【讨论】:

      【解决方案3】:

      Icicles 中,在任何 minibuffer 使用期间(无论是否完成),您都可以按到 insert a string that was saved in a variable or a register 的键。

      • 对于寄存器,点击 C-x r i(像往常一样)。
      • 对于字符串,点击 C-=

      默认情况下,使用的变量是 icicle-input-string,但如果您使用前缀 arg(即 C-u C-=),则会提示您输入要使用的变量。完成候选包括所有字符串值变量。

      您可以使用命令icicle-save-string-to-variable 将字符串(例如复杂的正则表达式)保存到变量中。同样,默认情况下,变量是 icicle-input-string,但带有前缀 arg 会提示您输入变量。

      您也可以随时通过点击 M-: 并输入 Lisp sexp 来在 minibuffer 中插入一个字符串以进行评估。结果被漂亮地打印并插入到 minibuffer 中。 (在 Icicles 中,M-: 会打开一个递归小缓冲区,它会打印得很漂亮。)

      【讨论】:

        猜你喜欢
        • 2022-01-07
        • 1970-01-01
        • 2012-04-24
        • 2015-05-24
        • 1970-01-01
        • 2019-02-01
        • 2012-12-24
        • 1970-01-01
        • 2014-10-07
        相关资源
        最近更新 更多