3

emacsには、現在開いているすべてのバッファーを異なるウィンドウにレンダリングするためのMxコマンドまたはキーコンボがありますか?わかりやすくするために、開いているバッファーが4つあり、現在表示されているのは1つだけで、1つのステップで各バッファーを1つの象限に表示したいとします。

4

2 に答える 2

4

ibufferをお勧めします。Mxibufferはおそらくあなたが望むものです。これが私の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*")
于 2012-08-29T21:32:36.630 に答える
3

既知の方法がない場合は、次のコードから始めることができます。

(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コマンドは、現在どこにも表示されていない(他のフレームを含む)バッファごとに新しいウィンドウを開きます。*使いやすさのために、名前が(オプションで、空白文字で始まる)で始まるバッファーは無視されます。これは、通常、内部使用のみを目的としているためです。

Emacsではユーザーがウィンドウを小さくしすぎることは許可されていないことに注意してください。したがって、表示するバッファが多すぎる場合、コマンドは最新の表示または選択の順にできるだけ多くのバッファを表示し、エラーを通知します。

于 2012-08-30T02:09:10.320 に答える