当我按C-x s
(save-some-buffers
)或C-x C-c
(save-buffers-kill-terminal
)时,Emacs会逐个显示已修改缓冲区的名称,并询问如何对每个缓冲区执行操作(保存,差异,通过,...)。逐个按y
是很慢的。按!
不会让您看到正在保存的缓冲区。
如何首先显示所有修改过的缓冲区的名称,以便我可以标记其中一些并快速保存所有其他缓冲区?
答案 0 :(得分:16)
C-x C-b
(M-x list-buffers
)显示所有缓冲区的列表。修改后的内容旁边会显示*
。您可以按s
标记要保存的缓冲区。完成后,按x
保存您标记的所有缓冲区。
不幸的是,据我所知,没有办法只显示未保存的缓冲区或对它们进行排序,因此它们都位于顶部。
(我实际上更喜欢M-x ibuffer
到M-x list-buffers
,但ibuffer
提供了类似的功能。)
答案 1 :(得分:12)
在emacs 23中,使用ibuffer:
奇怪的是,*你没有标记'特殊'缓冲区,比如 scratch ,编译等......我想我正在使用名称...
答案 2 :(得分:4)
使用ibuffer
,这应该包含所有新型号的emacsen。将以下内容放在.emacs文件中:
(autoload 'ibuffer "ibuffer" "" t)
(global-set-key (kbd "C-x C-b") 'ibuffer)
(defun my-ibuffer-load-hook ()
"Hook for when ibuffer is loaded."
(define-ibuffer-filter unsaved-file-buffers
"Only show unsaved buffers backed by a real file."
(:description "unsaved file buffers")
(and (buffer-local-value 'buffer-file-name buf)
(buffer-modified-p buf)))
(define-key ibuffer-mode-map (kbd "/ *") 'ibuffer-filter-by-unsaved-file-buffers)
)
;; (add-hook 'ibuffer-load-hook 'my-ibuffer-load-hook)
(eval-after-load 'ibuf-ext '(my-ibuffer-load-hook))
然后使用C-x C-b
显示ibuffer列表,使用/ *
显示由实际文件支持的未保存缓冲区(因此您在列表中看不到*scratch*
,因为例)。使用m
标记所需的缓冲区,然后使用S
保存它们。
答案 3 :(得分:4)
标题中问题的答案是将参数传递给save-buffers-kill-emacs(或-kill-terminal),即。使用密钥组合C-u C-x C-c
,它将静默保存所有缓冲区并退出(或C-u C-x s
以静默方式保存所有缓冲区。)
答案 4 :(得分:2)
在emacs 23中
C-x C-b
(M-x list-buffers
)查看缓冲区列表m
标记要保存的缓冲区S
保存标记的缓冲区u
可单独取消标记缓冲区,或M-x dired-unmark-all-marks
取消所有答案 5 :(得分:2)
我现在用Google搜索了这个问题并在此处找到了解决方案 http://johntellsall.blogspot.com.es/2013/03/emacs-save-all-modified-buffers.html
您必须将此配置添加到〜/ .emacs.d / init.el emacs配置
(global-set-key
(kbd "M-*")
(lambda ()
(interactive)
(save-some-buffers t)))
保存并评估init.el文件的缓冲区(M-evalb-buffer),然后当你想要保存所有修改过的文件时,你只需按下Meta键和“*”,如第二个所示线
我希望这个解决方案有效!
涓