使用绑定到它的键调用Emacs命令:如何指定可选参数?

使用绑定到它的键调用Emacs命令:如何指定可选参数?,emacs,spacemacs,Emacs,Spacemacs,我一直在尝试在region上调用交互式lisp函数shell命令,该命令绑定到M-|。我想知道,如果我想重定向命令的输出,我应该如何指定第四个参数,名为OUTPUT-BUFFER 我的环境:MS Windows中的“Emacs25.2+SpaceMac”。试试这个。我所做的只是从region上的shell命令复制interactive规范,并将参数OUTPUT-BUFFER的前缀arg替换为您输入的缓冲区名称 (defun foo(开始-结束命令 &可选输出缓冲区替换错误缓冲区显示错误缓冲区)

我一直在尝试在region上调用交互式lisp函数
shell命令,该命令绑定到
M-|
。我想知道,如果我想重定向命令的输出,我应该如何指定第四个参数,名为
OUTPUT-BUFFER


我的环境:MS Windows中的“Emacs25.2+SpaceMac”。

试试这个。我所做的只是从region
上的
shell命令复制
interactive
规范,并将参数
OUTPUT-BUFFER
的前缀arg替换为您输入的缓冲区名称

(defun foo(开始-结束命令
&可选输出缓冲区替换错误缓冲区显示错误缓冲区)
(互动
(let(字符串缓冲区)
(除非(标记)
(错误“现在没有设置标记,因此没有区域”))
(setq字符串(读取shell命令“区域上的shell命令:”)
缓冲区(读取缓冲区“输出缓冲区:”)
(列表(区域开始)(区域结束)字符串缓冲区
当前前缀arg shell命令默认错误缓冲区(t))
(区域开始结束命令输出缓冲区上的shell命令
替换错误缓冲区(显示错误缓冲区)

试试这个。我所做的只是从region
上的
shell命令复制
interactive
规范,并将参数
OUTPUT-BUFFER
的前缀arg替换为您输入的缓冲区名称

(defun foo(开始-结束命令
&可选输出缓冲区替换错误缓冲区显示错误缓冲区)
(互动
(let(字符串缓冲区)
(除非(标记)
(错误“现在没有设置标记,因此没有区域”))
(setq字符串(读取shell命令“区域上的shell命令:”)
缓冲区(读取缓冲区“输出缓冲区:”)
(列表(区域开始)(区域结束)字符串缓冲区
当前前缀arg shell命令默认错误缓冲区(t))
(区域开始结束命令输出缓冲区上的shell命令
替换错误缓冲区(显示错误缓冲区)

您需要滚动您自己的新函数来查询用户的其他参数,然后将这些参数传递给所需的函数——例如,
读取字符串
<代码>读取文件名
<代码>读取目录名<代码>读取编号<代码>读取密码;或者,设置您自己的新函数并硬编码所需的参数。我通常使用
启动流程
来处理几乎所有的事情,除了少数情况下使用
调用流程
。例如,
(defun示例()“Doc string”(交互式)(let((msg(read string”请键入字符串并按enter:))(消息“%s”msg))
您需要使用自己的新函数来查询用户的其他参数,然后将这些参数传递给所需的函数——例如,
read string
<代码>读取文件名<代码>读取目录名<代码>读取编号<代码>读取密码;或者,设置您自己的新函数并硬编码所需的参数。我通常使用
启动流程
来处理几乎所有的事情,除了少数情况下使用
调用流程
。例如,
(defun示例()“Doc string”(交互式)(let((msg(read string“请键入字符串并按enter:)))(消息“%s”msg))
此函数有效。但是如果我想用命令的输出替换区域,就像命令
!!vim中的cmd
区域上的C-h f外壳命令回答了这个问题。只需在region上使用带有前缀参数(
C-u
)的
shell命令即可。此函数有效。但是如果我想用命令的输出替换区域,就像命令
!!vim中的cmd
区域上的C-h f外壳命令
回答了这个问题。只需在region上使用带有前缀参数(
C-u
)的shell命令即可。