Emacs에서 모든 버퍼를 닫으려면 어떻게해야합니까?


1

나는 종종 Emacs (실제로 Aquamacs)를 열어두고 자동 완성을 방해하는 많은 버퍼로 바람을 피 웁니다. 나는 그들을 모두 닫고 신선하게 시작할 수 있기를 원합니다. 지금은 Emacs를 종료했다가 다시 엽니 다.

Emacs에서 모든 버퍼를 닫을 수있는 방법이 있습니까?

이것은 Emacs 24.4 / Aquamacs 3.2입니다.


(defun close-all-buffers () (interactive) (mapc 'kill-buffer (buffer-list)))- stackoverflow.com/a/3417472/2112489
lawlist

@lawlist 감사합니다! 여기에 답변으로 게시해야 다른 사람이 찾을 수있는 올바른 질문 제목 아래에 표시됩니다.
Schwern

1
또한 clean-buffer-list한동안 사용되지 않은 모든 버퍼를 닫을 수 있습니다 .
Juancho

답변:


3

다음 기능은 관련 질문에 stackoverflow에서 사용자 이름 Starkey 에 의해 작성되었습니다 : https : //.com/a/3417472/2112489

(defun close-all-buffers ()
(interactive)
  (mapc 'kill-buffer (buffer-list)))

편집 : 아래 주석에서 @Drew가 제안한 것처럼 일반적으로 이름에 선행 공백이있는 내부 버퍼를 유지하는 것이 좋습니다. doc-string은이 함수의 작동 방식에 대한 설명을 제공합니다. 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를 닫고 다시 시작할 수 있습니다. ;-) 모든 버퍼 를 죽일 가능성은 거의 없습니다 . 여기에는 Emacs가 기대하는 "내부"버퍼가 포함됩니다. 당신은 그것을 할 수 있지만, 그것이 당신이 정말로하고 싶은 일인지 의심합니다. 우선 공백 문자로 시작하지 않는 이름의 모든 버퍼를 죽일 것을 제안합니다.
Drew

@Drew-그것은 훌륭한 아이디어이며 내 자신의 아이디어를 포함시킬 변명을 줄 것이다. 이것은 보편적 인 인수를 받아들이는 킬 버퍼 함수이다. 즉, 표준은 현재 버퍼를 죽이거나 모두를 죽인다 선행 공간이 없습니다. 할 일 목록에 새 기능을 추가하겠습니다.
lawlist

2

당신의 주요 문제는 많은 오래된 버퍼에 관한 것으로 보입니다.

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))))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.