Как я могу закрыть все буферы в Emacs?
Я часто оставляю Emacs (на самом деле Aquamacs) открытым и получаю множество буферов, загромождающих мой автозаполнение. Я хотел бы иметь возможность закрыть их все и начать все сначала. Прямо сейчас я ухожу и снова открываю Emacs, но это неправильно.
Есть ли способ закрыть все буферы в Emacs?
Это Emacs 24.4 / Aquamacs 3.2.
2 ответа
Следующая функция была написана именем пользователя Starkey для stackoverflow в связанном вопросе: https://stackoverflow.com/a/3417472/2112489
(defun close-all-buffers ()
(interactive)
(mapc 'kill-buffer (buffer-list)))
РЕДАКТИРОВАТЬ: Как предложено @Drew в комментарии ниже, как правило, это хорошая идея, чтобы сохранить внутренние буферы, которые имеют начальный пробел в своих именах. Строка документа содержит объяснение того, как работает эта функция. Сочетание клавиш F5
Ключ - это просто пример для тестирования функции в сочетании с универсальным аргументом.
(defun custom-kill-buffer-fn (&optional arg)
"When called with a prefix argument -- i.e., C-u -- kill all interesting
buffers -- i.e., all buffers without a leading space in the buffer-name.
When called without a prefix argument, kill just the current buffer
-- i.e., interesting or uninteresting."
(interactive "P")
(cond
((and (consp arg) (equal arg '(4)))
(mapc
(lambda (x)
(let ((name (buffer-name x)))
(unless (eq ?\s (aref name 0))
(kill-buffer x))))
(buffer-list)))
(t
(kill-buffer (current-buffer)))))
(global-set-key [f5] 'custom-kill-buffer-fn)
Мне кажется, что вашей главной проблемой является множество старых буферов, которые вы, вероятно, давно не просматривали.
В Emacs есть команда clean-buffer-list
, По умолчанию он очищает буферы, к которым не обращались в течение 3 дней (или 1 часа, в случае некоторых специальных буферов). Конечно, вы можете настроить время. Также посмотрите на midnight-mode
, который делает это автоматически в определенное время.
Если вы не хотите уничтожать все буферы, кроме того, который вы используете в данный момент:
(defun kill-other-buffers ()
"Kill all other buffers."
(interactive)
(mapc 'kill-buffer (delq (current-buffer) (buffer-list))))