Я хочу закрыть все мои окна, кроме текущего, и развернуть кадр до максимума, чтобы я мог быстро увидеть все в буфере в этом одном окне, а затем вернуться к моей предыдущей настройке окна. Как бы я поступил так?
Я хочу закрыть все мои окна, кроме текущего, и развернуть кадр до максимума, чтобы я мог быстро увидеть все в буфере в этом одном окне, а затем вернуться к моей предыдущей настройке окна. Как бы я поступил так?
Ответы:
Различные разделы текста, которые вы видите в Emacs, являются окнами . Вы можете, например, создать новое окно с помощью C-x 2
. Да, эта терминология сбивает с толку. Это предшествует большинству систем графического интерфейса, так что это понятно, если все еще сбивает с толку.
Но как только мы узнаем, что говорим об окнах, мы можем внести необходимые изменения. Чтобы избавиться от всех окон, кроме того, в котором находится точка, запустите C-x 1
, сопоставьте delete-other-windows
.
Затем, для того, чтобы вернуться к тому, что у вас было раньше, есть довольно полезная библиотека под названием Winner-Mode . Это позволяет отменить и повторить изменения в конфигурации вашего окна.
Поэтому включите режим победителя с помощью M-x winner-mode
, а затем после вызова C-x 1
вы можете нажать, C-c left
чтобы отменить изменение конфигурации окна, вернув окнам то, что они были.
Если вы хотите постоянно включить режим победителя, поместите (winner-mode)
файл инициализации.
Использование winner-mode
удобно, но если вы действительно хотите переключаться между одним окном и многооконной конфигурацией, вот что я использовал раньше:
(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)))
Вы можете связать это, например, 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))))