如何在Emacs中默默地“保存所有缓冲区”?

时间:2013-03-06 17:49:56

标签: emacs

如何在Aquamacs Emacs中创建“静默保存所有缓冲区”的命令?

我发现命令save-some-buffers很好,但问题是它分别提示我确认我要保存的每个缓冲区。

通过谷歌搜索我找到了一个名为save-silently-p的变量的文档但似乎不存在(在Aquamacs 2.4版中,即Emacs 23.3.50.1)。

那么如何让它在没有提示的情况下以静默方式保存所有缓冲区呢?

4 个答案:

答案 0 :(得分:18)

您无需设置任何自定义变量,只需:

C-u C-x s

或者长篇:

Ctrl + u Ctrl + x s

此外,您可以执行C-x s并在提示符处按!,对所有可保存文件缓冲区均为“是”。这不是严格保密的,但它仍然非常快/不显眼。 (信用:@phils)

答案 1 :(得分:11)

如果您将非零传递给save-some-buffers,它会在没有提示的情况下保存所有文件,因此您可以执行类似

的操作
(defun save-all () (interactive) (save-some-buffers t))
(global-set-key (kbd "C-S") 'save-all)

答案 2 :(得分:3)

来自save-some-buffers的信息页面:

  

(保存一些缓冲区和可选的ARG PRED)

     

保存一些修改过的文件访问缓冲区。向用户询问每一个。   在决定或y' to save, diff-buffer-with-file'之前,您可以回答C-r' to look at the buffer in question with n'不保存d' to view the differences using view-buffer'。

     

此命令首先保存所有缓冲区,其中“buffer-save-without-query”   是非零的,没有问。

因此,您应该为所有文件将变量buffer-save-without-query设置为t(例如)。 (add-hook 'find-file-hook (lambda () (setq buffer-save-without-query t)))应该做到这一点。

答案 3 :(得分:3)

在此示例中,第一个参数设置为non-nil值 - “ [o] ptional参数(前缀)non-nil表示全部保存没有问题。“虽然它可能只是简单的t,但我选择构成一个更有意义的符号来提醒自己它代表什么 - 即'no-confirm。如果我想收到确认对话框,那么我会使用nil作为第一个参数。有关第一个参数是M-x describe-function RET save-some-buffers RET还是nil }的详细信p>

以下示例使用non-nil第二个参数的自定义零参数函数 - 即 PRED - 选择应保存哪些缓冲区。 save-some-buffers的文档字符串声明第二个参数 - 即 PRED - 可能是三种可能性之一 - (1) 如果 PRED save-some-buffers,则会考虑所有文件访问缓冲区; (2)如果 PRED nil,则还会考虑某些非文件缓冲区;或(3)如果PRED 是一个零参数函数,它表示每个缓冲区在使用该缓冲区当前调用时是否考虑它。

该示例使用t的键盘快捷键,但用户可以自由地以交互方式调用此自定义函数 - f5 - 或完全指定其他键盘快捷键。有一些可能的匹配已经硬编码,用户可以自由添加/删除/修改条件:

•file-visiting-buffer + 文件名与变量M-x my-save-some-buffers的值匹配。

•文件访问缓冲区 + 来自内置abbrev-file-name - 而非 AUCTeX的主要模式为latex-mode。< / p>

•文件访问缓冲区 + 主要模式为tex-mode.el

•文件访问缓冲区 + 主要模式为markdown-mode

•文件访问缓冲区 + 派生模式为emacs-lisp-mode

org-mode