現在のウィンドウ以外のすべてのウィンドウを閉じ、フレームを最大化して、その1つのウィンドウのバッファー内のすべてをすばやく確認してから、以前のウィンドウ設定に戻したいです。これを行うにはどうすればよいですか?
現在のウィンドウ以外のすべてのウィンドウを閉じ、フレームを最大化して、その1つのウィンドウのバッファー内のすべてをすばやく確認してから、以前のウィンドウ設定に戻したいです。これを行うにはどうすればよいですか?
回答:
Emacsに表示されるテキストのさまざまなセクションはウィンドウです。たとえば、を使用して新しいウィンドウを作成できますC-x 2
。はい、この用語は紛らわしいです。ほとんどのGUIシステムよりも古いため、混乱する場合でも理解できます。
しかし、ウィンドウについて話していることがわかったら、必要な変更を行うことができます。ポイントがあるウィンドウ以外のすべてのウィンドウを削除するには、を実行しC-x 1
、にマップしdelete-other-windows
ます。
次に、以前のものに戻るために、winner-modeという非常に便利なライブラリがあります。ウィンドウ構成の変更を元に戻したり、やり直したりできます。
したがって、で勝者モードを有効にしM-x winner-mode
、を呼び出した後C-x 1
、を押すC-c left
と、ウィンドウ構成への変更を元に戻して、ウィンドウを元の状態に戻すことができます。
勝者モードを永続的に有効にする場合(winner-mode)
は、initファイルに入れます。
を使用するのwinner-mode
は便利ですが、1つのウィンドウとマルチウィンドウ構成の間を行き来するだけの場合は、これまでに使用したことがありません。
(defvar window-split-saved-config nil)
(defun window-split-toggle-one-window ()
"Make the current window fill the frame.
If there is only one window try reverting to the most recently saved
window configuration."
(interactive)
(if (and window-split-saved-config (not (window-parent)))
(set-window-configuration window-split-saved-config)
(setq window-split-saved-config (current-window-configuration))
(delete-other-windows)))
これをegにバインドしC-x 1
、同じキーを使用して状態を切り替えることができます。
ウェブからコピーした以下を使用します。これは、現在のウィンドウ構成をそのままにする簡単な方法です。完了exit-recursive-edit
したら、を使用して戻ります。
;; http://www.emacswiki.org/emacs/RecursiveEditPreservingWindowConfig
;; inspired by Erik Naggum's `recursive-edit-with-single-window'
(defmacro recursive-edit-preserving-window-config (body)
"*Return a command that enters a recursive edit after executing BODY.
Upon exiting the recursive edit (with\\[exit-recursive-edit] (exit)
or \\[abort-recursive-edit] (abort)), restore window configuration
in current frame."
`(lambda ()
"See the documentation for `recursive-edit-preserving-window-config'."
(interactive)
(save-window-excursion
,body
(recursive-edit))))
(global-set-key (kbd "C-c 0") (recursive-edit-preserving-window-config (delete-window)))
(global-set-key (kbd "C-c 1") (recursive-edit-preserving-window-config
(if (one-window-p 'ignore-minibuffer)
(error "Current window is the only window in its frame")
(delete-other-windows))))