emacs에서 현재 열려있는 모든 버퍼를 다른 창에 렌더링하는 M-x 명령 또는 키 조합이 있습니까? 명확성을 위해 4 개의 열린 버퍼가 있고 현재 표시된 버퍼가 하나만 있다고 가정하고 한 단계에서 각 버퍼를 한 사분면에 표시하려고합니다.Emacs에 열려있는 버퍼를 모두 표시합니다.
2
A
답변
2
그것을 할 수있는 이미 알려진 방법이없는 경우 다음과 같은 코드를 시작할 수 있습니다 :
(defun buffer-in-window-list()
(let (buffers)
(walk-windows (lambda (window) (push (window-buffer window) buffers)) t t)
buffers))
(defun display-all-buffers()
(interactive)
(let (buffers-in-window (buffer-in-window-list))
(dolist (buffer (buffer-list))
(when (and (not (string-match "\\`[[:space:]]*\\*" (buffer-name buffer)))
(not (memq buffer buffers-in-window)))
(set-window-buffer (split-window (get-largest-window)) buffer)))
(balance-windows)))
display-all-buffers
명령에 대한 새 창을 엽니가 각 버퍼는 현재 어디에도 표시되지 않습니다 (다른 프레임 포함). 유용성을 위해, 내부적으로 만 사용되기 때문에 이름이 *
으로 시작하는 버퍼 (선택적으로 공백 문자가 접두사 임)를 무시합니다.
이맥스는 사용자가 너무 작은 창을 만들 수 없도록합니다. 따라서 표시 할 버퍼가 너무 많은 경우 명령은 가능한 한 많은 버퍼를 최신 표시 또는 선택 순서대로 표시하고 오류를 신호로 보냅니다.
3
덤프를 권장합니다. M-x ibuffer는 아마도 당신이 원하는 것일 것입니다. 여기 내 ibuffer 구성입니다 :
;; *Messages* is so annoying. Also, I really like ibuffer
(require 'ibuf-ext)
(add-to-list 'ibuffer-never-show-predicates "^\\*Messages")
(add-to-list 'ibuffer-never-show-predicates "^\\*Completions")
(global-set-key (kbd "C-b") 'ibuffer)
(kill-buffer "*scratch*")
('ibuffer)
(switch-to-buffer "*Ibuffer*")
+0
감사합니다 user996056, 나는 ibuffer에 대해 몰랐습니다.이 설정은 유용합니다! –
버퍼 4 개? 내 이맥스는 현재 188 개의 버퍼를 가지고있다. – cjm
cjm이 모든 버퍼를 화면의 다른 부분으로 분할 했습니까? –
분명히 아닙니다, 그들은 적합하지 않을 것입니다. 나는 실제로 한 번에 몇 가지만 표시합니다 (종종 1 번만 표시). – cjm