您可使用<代码>C-u M-: (eval-expression
,附有普遍预设理由),以评价任何李平表达方式,并在目前的缓冲中添加其价值(包括只要您有,可回收-minibuffers
,即为非nil
值)。
您的例子:C-u M-:缓冲-file-name RET
。
注:该表述的结果以Lisp形式印刷:也就是说,以下述方式引证:read
的后继呼吁将形成 Equal
。 销售价值。 对于扼杀,这意味着重复引用,这或许会被解释为你期望低劣。 然而,你可能会遇到一些带有特殊特征的扼杀问题,需要Eliesp和壳牌不同的穿梭。
更正确的方式使用<代码>shell-quote-argument,如梅毒解决办法。 这里的缩略语是“自由表达”一词,在适当引述的字句中添加其价值:
(defun eval-to-shell-argument (form)
(interactive "XEval: ")
(insert (shell-quote-argument form)))
The read-and-evaluate step happens automatically by using an "X"
as the argument to interactive
.
www.un.org/spanish/ecosoc 加入: 如@tenpn notes,上述解决办法并不是为了在像一个<代码>这样的小型布置中添加诸如<代码>buffer-file-name等缓冲-当地变量。 M-! popsup(更确切地说,它增加了小型水土的缓冲-当地价值,这不大可能有用)。 这里是一份修订案文,似乎正在工作。 如果微型筹资活动活跃,则在阅读和评估一种表述时,使先前选定的窗口的缓冲暂时活跃。
Final edit: From @Stefan s answer I see that I should have used (minibuffer-selected-window)
to find the previously-selected window. I ve also added a (format "%s" ..)
to allow inserting non-string values, while still quoting special characters in strings. Here s the final version:
(defun eval-to-shell-argument ()
(interactive)
(let* ((buffer
(if (minibufferp)
(window-buffer (minibuffer-selected-window))
(current-buffer)))
(result
(with-current-buffer buffer
(eval-minibuffer "Eval: "))))
(insert (shell-quote-argument (format "%s" result)))))