Tôi muốn đóng tất cả các cửa sổ của mình nhưng cửa sổ hiện tại và tối đa hóa khung để tôi có thể nhanh chóng nhìn thấy mọi thứ trong bộ đệm trong một cửa sổ đó, sau đó trở lại thiết lập cửa sổ trước đó. Tôi sẽ đi đâu để tới đó?
Tôi muốn đóng tất cả các cửa sổ của mình nhưng cửa sổ hiện tại và tối đa hóa khung để tôi có thể nhanh chóng nhìn thấy mọi thứ trong bộ đệm trong một cửa sổ đó, sau đó trở lại thiết lập cửa sổ trước đó. Tôi sẽ đi đâu để tới đó?
Câu trả lời:
Các phần khác nhau của văn bản bạn nhìn thấy trong Emacs của bạn là các cửa sổ . Bạn có thể, ví dụ, tạo một cửa sổ mới với C-x 2
. Vâng, thuật ngữ này là khó hiểu. Nó có trước hầu hết các hệ thống GUI, vì vậy có thể hiểu được nếu vẫn còn khó hiểu.
Nhưng một khi chúng ta biết chúng ta đang nói về windows, chúng ta có thể thực hiện những thay đổi bạn muốn. Để thoát khỏi tất cả các cửa sổ ngoại trừ cửa sổ đang chạy C-x 1
, hãy chạy , ánh xạ tới delete-other-windows
.
Sau đó, để quay lại những gì bạn có trước đây, có một thư viện khá hữu ích được gọi là chế độ người chiến thắng . Nó cho phép bạn hoàn tác và làm lại các thay đổi đối với cấu hình cửa sổ của bạn.
Vì vậy, kích hoạt chế độ người chiến thắng với M-x winner-mode
, và sau đó sau khi bạn gọi C-x 1
, bạn có thể nhấn C-c left
để hoàn tác thay đổi cấu hình cửa sổ, đặt các cửa sổ trở lại như cũ.
Nếu bạn muốn bật chế độ người chiến thắng vĩnh viễn, hãy đặt (winner-mode)
tệp init của bạn.
Sử dụng winner-mode
rất tiện lợi, nhưng nếu bạn thực sự chỉ muốn lật qua lại giữa một cửa sổ và cấu hình nhiều cửa sổ, thì đây là thứ tôi đã sử dụng trước đây:
(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)))
Bạn có thể liên kết nó với ví dụ C-x 1
và sử dụng cùng khóa đó để chuyển trạng thái.
Tôi sử dụng như sau, sao chép từ web. Đó là một cách nhanh chóng để rời khỏi cấu hình cửa sổ hiện tại của bạn. Sau khi bạn sử dụng xong exit-recursive-edit
để lấy lại.
;; 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))))