Как сохранить несколько буферов (по моему выбору) одновременно в Emacs? - PullRequest
14 голосов
/ 05 декабря 2009

Когда я нажимаю C-x s (save-some-buffers) или C-x C-c (save-buffers-kill-terminal), Emacs выводит имена модифицированных буферов по одному и спрашивает, что делать с каждым (save, diff, pass, .. .). Нажатие y по одному медленно. Нажатие ! не позволяет увидеть, какие буферы сохраняются.

Как мне сначала отобразить имена всех измененных буферов, чтобы я мог выделить некоторые из них и быстро сохранить все остальные?

Ответы [ 6 ]

16 голосов
/ 05 декабря 2009

C-x C-b (M-x list-buffers) отображает список всех буферов. Модифицированные будут показаны с * рядом с ними. Вы можете пометить буфер для сохранения, нажав s. Когда вы закончите, нажмите x, чтобы сохранить все отмеченные вами буферы.

К сожалению, насколько я знаю, нет способа показать только несохраненные буферы или отсортировать их, чтобы они все были наверху.

(на самом деле я предпочитаю M-x ibuffer M-x list-buffers, но ibuffer предоставляет аналогичную функцию.)

13 голосов
/ 01 января 2010

В emacs 23 с ibuffer:

  • 'M-x ibuffer' (чтобы открыть список буферов)
  • '* u' (одновременно запуск и u) для пометки всех несохраненных буферов
  • 'S' для сохранения всех отмеченных буферов

Как ни странно, * u не помечает "специальные" буферы, такие как scratch , compilation и т. Д ... Я предполагаю, что я regexps на имя ...

4 голосов
/ 13 ноября 2010

Ответом на вопрос в заголовке является передача аргумента в save-buffers-kill-emacs (или -kill-терминал), т.е. используйте комбинацию клавиш C-u C-x C-c, которая будет молча сохранять все буферы и завершать работу (или C-u C-x s, чтобы просто молча сохранять все буферы).

4 голосов
/ 06 декабря 2009

Используйте 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.

2 голосов
/ 30 августа 2013

Я погуглил этот вопрос и нашел решение здесь http://johntellsall.blogspot.com.es/2013/03/emacs-save-all-modified-buffers.html

Вы должны добавить эту конфигурацию в вашу конфигурацию emacs ~ / .emacs.d / init.el

(global-set-key 
 (kbd "M-*")
 (lambda ()
   (interactive)
   (save-some-buffers t)))

сохраните и оцените буфер (M-evalb-buffer) файла init.el, а затем, когда вы хотите сохранить все измененные файлы, вам нужно всего лишь нажать клавишу Meta с «*», как указано во втором линия

Я надеюсь, что это решение работает!

Juan

2 голосов
/ 03 сентября 2011

В Emacs 23

  • C-x C-b (M-x list-buffers) для просмотра списка буферов
  • m для отметки буферов для сохранения
  • S для сохранения отмеченных буферов
  • u для снятия отметки с буферов по отдельности или M-x dired-unmark-all-marks для всех
...