如何将*shell命令输出*缓冲区保存在后台?

qua*_*gar 7 emacs

*Shell Command Output*在调用像这样的shell命令时,如何告诉emacs不要弹出缓冲区?

(shell-command MY_COMMAND)
Run Code Online (Sandbox Code Playgroud)

目前,emacs将当前窗口拆分为两个,显示(通常是不相关的)输出缓冲区.对我而言,如果我能够在以后查找它,那将是完全足够的.

pmr*_*pmr 9

shell-command采用可选参数OUTPUT-BUFFER,您可以在其中指定要输出的缓冲区.如果是t(实际上不是缓冲区名称而不是nil),它将在当前缓冲区中输出.所以我们将它包装成一个with-temp-buffer并且永远不必为此烦恼:

(with-temp-buffer
  (shell-command "cat ~/.emacs.d/init.el" t))
Run Code Online (Sandbox Code Playgroud)


qua*_*gar 9

也许使用shell-command是问题的根源.我想我找到了一个有效的解决方案call-process,尽管可能有更优雅的方式:

(call-process-shell-command
 "cat ~/.emacs.d/init.el"
 nil "*Shell Command Output*" t
 )
Run Code Online (Sandbox Code Playgroud)