Как сохранить несколько буферов (по моему выбору) одновременно в Emacs?
Когда я нажимаю C-x s
(save-some-buffers
) или C-x C-c
(save-buffers-kill-terminal
), Emacs отображает имена модифицированных буферов один за другим и спрашивает, что делать с каждым (save, diff, pass,...). Нажатие y
по очереди медленное. Нажатие !
не позволяет вам видеть, какие буферы сохраняются.
Как я могу сначала отобразить имена всех измененных буферов, чтобы я мог отметить некоторые из них и быстро сохранить все остальные?
Ответы
Ответ 1
C-x C-b
(M-x list-buffers
) отображает список всех буферов. Модифицированные будут показаны рядом с ними *
. Вы можете отметить буфер для сохранения, нажав s
. Когда вы закончите, нажмите x
, чтобы сохранить все отмеченные буферы.
К сожалению, насколько я знаю, нет способа показать только несохраненные буферы или отсортировать их, чтобы они были наверху.
(Я действительно предпочитаю M-x ibuffer
до M-x list-buffers
, но ibuffer
предоставляет аналогичную функцию.)
Ответ 2
В emacs 23 с ibuffer:
- 'M-x ibuffer' (чтобы открыть список буферов)
- '* u' (start и u в одно и то же время) отмечать все несохраненные буферы
- 'S' для сохранения всех отмеченных буферов
Как ни странно, * u не помещает "специальные" буферы, такие как скрест, компиляция и т.д. Я полагаю, что regexps на имени...
Ответ 3
Используйте 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
.
Ответ 4
Ответ на вопрос в заголовке - передать аргумент save-buffers-kill-emacs (или -kill-terminal), т.е. используйте комбинацию клавиш C-u C-x C-c
, которая будет молча сохранять все буферы и выходить (или C-u C-x s
, чтобы просто молча сохранять все буферы).
Ответ 5
В emacs 23
-
C-x C-b
(M-x list-buffers
) для просмотра списка буфера
-
m
для отметки буферов для сохранения
-
S
для сохранения отмеченных буферов
-
u
для отмены буферов отдельно или M-x dired-unmark-all-marks
для всех
Ответ 6
У меня есть googled сейчас для этого вопроса и нашел решение здесь
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)))
сохранить и eval буфер (M-evalb-buffer) файла init.el, а затем, когда вы хотите сохранить все измененные файлы, вам нужно нажать клавишу Meta с помощью "*", как указано во втором линия
Я надеюсь, что это решение будет работать!
Хуан