2009-07-31 25 views
24

これはおそらく非常に素朴なEmacsの質問です - 私はそれが初めてです。Emacsで自動的に開いたウィンドウを閉じるにはどうしたらいいですか?

私がlisp式を評価しているとき、エラーがあれば、デバッガは自動的に別のウィンドウに表示されます。もし* scratch *と* info * open(前者はlispを試していて、後者はそれについて読むことができます)、* info *が入っていたウィンドウでデバッガが開きます。そのウィンドウに移動し、* info *に戻してから* scratch *に戻ります。 (バッファのリストのためにC-x C-bを実行した場合も同じことが起こります)この長い一連のコマンドがなければ、ウィンドウを閉じる方法がなければならないと思います。誰でも私を啓発することはできますか?

+0

自動的に他のウィンドウを閉じます、あなたの正しい分岐を見つけるよりも、undo-tree-visualizeを開く

を記述してみてください? –

+0

私はそれを熟考しました...それは難しい決定です。それはクロスポストにはいいですか? (私はメタでそれを尋ねるべきだと思います:P) – Skilldrick

+3

Emacsに関するほとんどの質問は通常elispのほんの少しの記述を含んでいるので、ここで最もよく答えられるようです。 :) –

答えて

21

少なくとも私のemacs(22.3)では、デバッガがポップアップするとそのウィンドウがアクティブになります。そこで、qを押すと、デバッガが終了します。この時点では、再帰的な編集も行われません。

+0

うん、それは動作します!しかし、永続的なバッファリストの場合は解決されませんが、別の質問かもしれません... – Skilldrick

+0

"q"はポップアップウィンドウの多くのためのかなり一般的な終了メカニズムです。 calc、カレンダー、デバッガー、dired、およびbrowse-kill-ringのような組み込みではない他のもので動作します。これは永続的なバッファリストでも機能しますが、まずバッファリストに切り替える必要があります。特定の作業ウィンドウ構成がある場合は、C-x r w で保存してから、C-x r j を使用していつでも戻すことができます。 –

+0

私は24.5で遊んでいた、 'q'の解決策を確認することができます。しかし、 'q'が失敗した場合、 'C-x 0'はフォーカスされたウィンドウも閉じます。 –

1

一つの可能​​な解決策は、ウィンドウ管理パッケージを使用することです。あなたの "優先"ウィンドウの配置を保存し、デバッガ/バッファウィンドウがポップアップした後、それを完了したら、希望する配置に戻してください。

選択できるパッケージがたくさんあります:wikiのswitching window configurationsを参照してください。

さらに、余分な(不要な)ウィンドウがポップアップするような動作を把握し、それを使用してウィンドウがポップアップする直前にウィンドウ構成を保存することができます。

あなたが(それは非常に簡単です)独自のロールしたい場合は、あなただけのウィンドウ構成をオフに保存し、そのようにそれを復元することができます。

(setq the-window-configuration-i-want (current-window-configuration)) 
(global-set-key (kbd "<f7>") 
     (lambda() (interactive) 
      (set-window-configuration the-window-configuration-i-want))) 

トリックの設定を置くことを考え出すされますthe-window-configuration-i-want

3

私はC-x 4 C-oを探していると思います。これは、「他の」ウィンドウに切り替えることなくバッファを表示します。

上記のように、バックトレースバッファの場合は、再帰編集から抜け出すために、qで終了することをお勧めします。

5

winner modeを使用すると、キーバインディングC-Cの左矢印を使用して前のウィンドウ構成に戻ることができます。もちろん、これは実際に新しいバッファを殺すわけではありませんが、それを隠してしまいます。

12

私が理解しているところから、現在のウィンドウからカーソルを移動せずに、別のウィンドウのバッファを閉じたいとします。

私は既存の機能を何も持っていないので、私は自分自身をロールバックしました。

(defun other-window-kill-buffer() 
    "Kill the buffer in the other window" 
    (interactive) 
    ;; Window selection is used because point goes to a different window 
    ;; if more than 2 windows are present 
    (let ((win-curr (selected-window)) 
     (win-other (next-window))) 
    (select-window win-other) 
    (kill-this-buffer) 
    (select-window win-curr))) 

あなたは、「C-XのK」またはあなたが誤ってそれを押してくださいしないように他のいくつかのやや困難なキーを押しのようなものにバインドすることができます。

(global-set-key (kbd "C-x K") 'other-window-kill-buffer) 

私はこれを多く使用します。 (ヘルプバッファ、コンパイルバッファ、Grepバッファ、ポイントを動かさずに今すぐ閉じたい普通の古いバッファ)

1

popwin-modeを試してみてください。ウィンドウを自動的に閉じることは本当に良いことです。

まもなく病気あなたは、あなたが窓switch-windowを変え、その後、それは多分、スーパーユーザで、このオーバーを尋ねる

関連する問題