不要なバッファが開かないようにする


18

私は毎日のJavaScript編集にemacsを使用し、Cx LEFTとCx RIGHTを使用するバッファーを切り替えていますが、これで問題ありません(変更しているファイルのパスを知ることが難しい場合でも)。

私の問題:

  1. 起動時に私は常に持っている*scratch**Messages*開かれ、私は入れていると考え(kill-buffer "*scratch*")、私の.emacsにしても問題が解決するだろうが、そうではありません、あなたが提案を持っているのですか?

  2. ファイルを開くときは常にTABオートコンプリートを行うので、補完*Messages*のオプションを含む新しいバッファーを作成するたびに、これを作成しないようにするにはどうすればよいですか、または、より良い方法として、emacsにそれを強制終了させます私の選択をしましたか?

私が一番上で言ったように私がナビゲートして「あるべき姿」ではない何かをしていると思うなら、あなたの意見を言ってください。


1
Treyが提案したように、バッファーを切り替える他の方法を検討することもできます。シーケンシャルではない他の方法を選択した場合、すぐに目的のバッファにジャンプできるため、不要なバッファがバッファリストにあるかどうかは関係ありません。私は自分でiswitchbを使用しています。
トム

回答:


23

これは私がそれを修正するまで気が狂った..

これで、フローに悪影響を及ぼすスクラッチメッセージ、または完了バッファーはありません。楽しい!

これを.emacsに配置します。

;; Makes *scratch* empty.
(setq initial-scratch-message "")

;; Removes *scratch* from buffer after the mode has been set.
(defun remove-scratch-buffer ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*")))
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)

;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")

;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
                (kill-buffer buffer)))))

;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)

;; Show only one active window when opening multiple files at the same time.
(add-hook 'window-setup-hook 'delete-other-windows)

ボーナス:

;; No more typing the whole yes or no. Just y or n will do.
(fset 'yes-or-no-p 'y-or-n-p)

1
これをどうもありがとうございます。
アルベルトザッカニ14

あなたが最も歓迎している!:D
オレ14

2
構成を(if (get-buffer "*Messages*") (kill-buffer "*Messages*"))リロードする場合に行うのは理にかなっていないでしょうか?あなたの他のマクロに純粋に触発されました。
サイモン「Reinstate Monica」シャイン

2
バッファを取り除くまで、これらのバッファがどれほど煩わしいのか気づかなかった。
オートマトン

これは、Emacsがクラッシュ
アルパース

6

まあ...それは部分的にEmacsが動作する方法ですが、一般的な切り替えを支援するためにできることがあります。

まず、Emacsには少なくとも1つのバッファが必要です。したがって、*scratch*andを*Messages*削除したい場合でも、不要なバッファーがもう1つ残っています(またはkill-buffer、バッファーを再作成しているためにEmacsが最後の要求を無視した時点になります( b / c 1つのバッファーが必要です)。

そのため、バッファの切り替えがより理にかなっている点に到達するための最良の方法は、実際に切り替えたいバッファを持つことです

そして、それを行った後、バッファを切り替えるために利用可能なすべてのオプション/パッケージを見ることができます-それらの多くは、Emacs WikiのSwitchingBuffersの下にリストされています。 idoと同様、かなり人気がiciclesありanythingます。


1
でセッションを保存している(desktop-save-mode 1)ので、ほとんどの場合、起動時に何かが開かれます。これらのパッケージを確認します、ありがとう。
アルベルトザッカニ

1

* scratch *バッファーのみ削除し、* Messages *バッファーを残すことに興味がある人は、このコードでうまくいきました。

(defun acg-initial-buffer-choice ()
  (if (get-buffer "*scratch*")
      (kill-buffer "*scratch*"))
  (get-buffer "*Messages*"))

(setq initial-buffer-choice 'acg-initial-buffer-choice)

Emacsに表示するバッファがない場合(たとえば、すべてのバッファを削除した場合)、* scratch *または* Messages *バッファが作成されるため、必ず確認してください。ワークフロー中にすべてのバッファを削除しないと、*スクラッチ*が再び元に戻ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.