我怎么能告诉Emacs的不叫这样一个shell命令时弹出*Shell Command Output*
缓冲区?* shell命令输出*缓冲区如何保存在后台?
(shell-command MY_COMMAND)
目前的emacs将当前窗口分成两个,示出(主要是不相关的)输出缓冲器。对我来说,如果我能够在晚些时候看到它,如果我喜欢它,那将是完全足够的。
我怎么能告诉Emacs的不叫这样一个shell命令时弹出*Shell Command Output*
缓冲区?* shell命令输出*缓冲区如何保存在后台?
(shell-command MY_COMMAND)
目前的emacs将当前窗口分成两个,示出(主要是不相关的)输出缓冲器。对我来说,如果我能够在晚些时候看到它,如果我喜欢它,那将是完全足够的。
也许使用shell-command
是问题的根源。我想我找到了解决办法与call-process
其作品,虽然有可能是一个更优雅的方式:
(call-process-shell-command
"cat ~/.emacs.d/init.el"
nil "*Shell Command Output*" t
)
shell-command
有一个可选的参数OUTPUT-BUFFER
在那里你可以指定缓冲区输出到。如果是t
(其实并不是一个缓冲区名称,而不是nil
),这将是在当前缓冲区输出。所以我们总结这为with-temp-buffer
和将永远不会有管它:
(with-temp-buffer
(shell-command "cat ~/.emacs.d/init.el" t))
此实用程序功能可能会有所帮助。从`doc字符串这里是摘录 - 它返回shell命令的实际值
(defun shell-command-as-string (cmd)
(with-temp-buffer
(shell-command-on-region (point-min) (point-max)
cmd t)
(buffer-string)))
'壳command'是使用'启动process'一个奇特的功能 - 后者提供了更多的控制壳command':'在elisp的,你经常会得到更好的服务调用“呼叫处理”或“开始处理”直接,因为它提供了更多的控制权,也不强制使用一个壳(其需要引用通过使用启动过程,您还可以将输出缓冲区设置为“nil”。 – lawlist 2013-12-12 15:53:39