Chcę zamknąć wszystkie okna oprócz bieżącego i zmaksymalizować ramkę, aby szybko zobaczyć wszystko w buforze w tym jednym oknie, a następnie powrócić do poprzedniej konfiguracji okna. Jak miałbym to zrobić?
Chcę zamknąć wszystkie okna oprócz bieżącego i zmaksymalizować ramkę, aby szybko zobaczyć wszystko w buforze w tym jednym oknie, a następnie powrócić do poprzedniej konfiguracji okna. Jak miałbym to zrobić?
Odpowiedzi:
Różne sekcje tekstu widoczne w Emacsie to okna . Możesz na przykład utworzyć nowe okno za pomocą C-x 2
. Tak, ta terminologia jest myląca. Wyprzedza większość systemów GUI, więc jest zrozumiałe, jeśli nadal jest mylące.
Ale gdy już wiemy, że mówimy o systemie Windows, możemy wprowadzić żądane zmiany. Aby pozbyć się wszystkich okien oprócz tego, w którym znajduje się ten punkt, uruchom C-x 1
, zamapuj na delete-other-windows
.
Następnie, aby powrócić do tego, co miałeś wcześniej, istnieje całkiem przydatna biblioteka o nazwie tryb zwycięzcy . Umożliwia cofanie i ponawianie zmian w konfiguracji okna.
Włącz tryb zwycięzcy za pomocą M-x winner-mode
, a następnie po zadzwonieniu C-x 1
możesz nacisnąć, C-c left
aby cofnąć zmianę konfiguracji okna i przywrócić okna do stanu, w jakim były.
Jeśli chcesz na stałe włączyć tryb zwycięzcy, umieść (winner-mode)
plik inicjujący.
Korzystanie winner-mode
jest przydatne, ale jeśli naprawdę chcesz po prostu przewijać w przód iw tył między jednym oknem a konfiguracją wielu okien, oto coś, z czego korzystałem wcześniej:
(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)))
Możesz to powiązać np. C-x 1
I użyć tego samego klucza do przełączania stanów.
Korzystam z poniższych, skopiowanych z Internetu. Jest to szybki sposób na opuszczenie bieżącej konfiguracji okna. Po zakończeniu użyj, exit-recursive-edit
aby wrócić.
;; 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))))