3

*で囲まれた一時バッファを自動的に閉じるにはどうすればよいですか。たとえばメッセージの場合、完了バッファを閉じる必要があります。使用後にこれらすべてのバッファを手動で強制終了するのは面倒です。

emacs(私たちではなく)によって作成された一時バッファーを閉じる方法はありますか?

4

4 に答える 4

5

本当にそれらのバッファを閉じる必要がありますか?iswitchbのような適切なバッファ切り替え方法を使用する場合は、必要な任意のバッファに直接移動できるため、一時バッファやその他のバッファを気にする必要はありません。

于 2012-08-11T12:40:32.233 に答える
3

私はあなたが使用するidoiswitchb、一時的なバッファに煩わされるのを避けるための提案を2番目にします。これらのバッファーの存在はemacsを使用することの自然な結果であるため、上流で泳ぐことを試みないでください!

一方、開いているバッファのリストが増えていることにイライラしている場合はmidnight.el、一定期間後に非アクティブなバッファを自動的に閉じるために使用できます。または、ibuffer不要なバッファをまとめて簡単に選択して閉じるために使用できます。

個人的には、バッファを長時間開いたままにし、時々を使用してバッファを整理し、バッファをすばやく切り替えるibufferことに依存しています。idoEmacs 24では、に設定ido-use-virtual-buffersするtと、ido閉じたファイルに切り替えて、必要に応じて再度開くことができます。

于 2012-08-11T20:39:34.250 に答える
2

これらのバッファが邪魔にならないように、キーバインディングを定義して«ユーザーバッファ»と«役に立たないバッファ»を循環させることができます。

http://ergoemacs.org/emacs/effective_emacs.html、セクション«次/前のユーザーバッファの切り替え»

ただし、シェル、コンパイルバッファ、ielmなど、一部の便利なバッファは*で始まります。

于 2012-08-13T10:37:47.770 に答える
2

ユーザーが言ったように、やなどのスマートなバッファ切り替えパッケージを使用する方がよいでしょiswitchbidoiswitchb'siswitchb-buffer-ignoreおよびido'sido-ignore-buffers変数を使用すると、正規表現を使用して無視するバッファーを指定できます。

ただし、これらのバッファを本当に強制終了したい場合は、次のようなプログラムが役立ちます。

(require 'cl)

(defvar kill-star-buffers-except
  '("\\`\\*scratch\\*\\'"
    "\\`\\*Messages\\*\\'"
    "\\` \\*Minibuf-[[:digit:]]+\\*\\'"
    "\\` \\*Echo Area [[:digit:]]+\\*\\'")
  "Exception list for `kill-star-buffers'")

(defun kill-star-buffers ()
  "Kill all star buffers except those in `kill-star-buffers-except'"
  (interactive)
  (mapc (lambda (buf)
          (let ((buf-name (buffer-name buf)))
            (when (and
                   ;; if a buffer's name is enclosed by * with optional leading
                   ;; space characters
                   (string-match-p "\\` *\\*.*\\*\\'" buf-name)
                   ;; and the buffer is not associated with a process
                   ;; (suggested by "sanityinc")
                   (null (get-buffer-process buf))
                   ;; and the buffer's name is not in `kill-star-buffers-except'
                   (notany (lambda (except) (string-match-p except buf-name))
                           kill-star-buffers-except))
              (kill-buffer buf))))
        (buffer-list)))
于 2012-08-11T16:14:47.970 に答える