关闭一个窗口以外的所有窗口的快速方法,然后恢复到先前的窗口设置?


12

我想关闭除当前窗口以外的所有窗口并最大化框架,以便可以快速查看该窗口中缓冲区中的所有内容,然后恢复到以前的窗口设置。我将如何去做呢?


链接可能会有所帮助。
Nsukami _

3
您不清楚“关闭”或“查看一帧中的所有内容”是什么意思。(提高和)最大化您感兴趣的框架会不会让您看到该框架中的所有内容?其他框架仍将存在,但将隐藏在最大化的框架后面。如果满足您的需要,这是很容易做到的。
提请

1
为了确保您使用的是单词frame的Emacs定义,对吗?由您的窗口管理器管理的顶级事物?
zck

@zck我的意思是将屏幕分割成各个可见缓冲区。我想最大化一个缓冲区以填满整个屏幕,然后撤消它,以便可以看到其原始配置中的所有缓冲区。如果词汇错了,我深表歉意,我尝试查找它,并选择最
安德鲁(Andrew)

Answers:


14

您在Emacs中看到的文本的不同部分是windows。例如,您可以使用创建一个新窗口C-x 2。是的,这个术语令人困惑。它早于大多数GUI系统,因此即使仍然令人困惑也可以理解。

但是,一旦我们知道我们正在谈论Windows,就可以进行所需的更改。要清除所有指向该窗口的窗口,请运行C-x 1,将其映射到delete-other-windows

然后,要回到以前的样子,有一个非常有用的库,称为winner-mode。它允许您撤消和重做对窗口配置的更改。

因此,使用启用赢家模式M-x winner-mode,然后在调用之后C-x 1,可以按C-c left撤消对窗口配置的更改,将窗口设置回原来的状态。

如果要永久启用赢家模式,请放入(winner-mode)您的init文件。


7

使用起来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并使用相同的键来切换状态。


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))))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.