Schnelle Möglichkeit, alle Fenster bis auf ein Fenster zu schließen und dann zum vorherigen Fenster-Setup zurückzukehren?

12

Ich möchte alle meine Fenster außer dem aktuellen schließen und den Rahmen maximieren, damit ich schnell alles im Puffer in diesem einen Fenster sehen und dann zu meinem vorherigen Fenster-Setup zurückkehren kann. Wie würde ich das machen?

Andrew
quelle
Dieser Link kann helfen.
Nsukami _
3
Es ist nicht wirklich klar, was Sie unter "Schließen" oder "Alles in diesem einen Bild sehen" verstehen. Würde (Erhöhen und) Maximieren des Rahmens, an dem Sie interessiert sind, Sie nicht alles in diesem Rahmen sehen lassen? Die anderen Frames wären immer noch da, würden aber hinter dem maximierten Frame versteckt sein. Dies ist trivial zu erreichen, wenn es Ihren Anforderungen entspricht.
Drew
1
Nur um sicherzugehen, dass Sie die Emacs-Definition des Wortrahmens verwenden , richtig? Die oberste Sache, die von Ihrem Fenstermanager verwaltet wird?
zck
@zck Ich meine die einzelnen sichtbaren Puffer, in die mein Bildschirm aufgeteilt ist. Ich möchte einen Puffer maximieren, um den gesamten Bildschirm auszufüllen, und ihn dann rückgängig machen, damit ich alle Puffer in ihrer ursprünglichen Konfiguration sehen kann. Ich entschuldige mich, wenn ich den Wortschatz falsch verstanden habe. Ich habe versucht, ihn nachzuschlagen und das beste Wort auszuwählen
Andrew
2
Weitere Informationen zur Terminologie finden Sie unter: Was ist der Unterschied zwischen einem Puffer, einer Datei, einem Fenster und einem Frame?
Dan

Antworten:

14

Die verschiedenen Textabschnitte, die Sie in Ihrem Emacs sehen, sind Fenster . Sie können beispielsweise ein neues Fenster mit erstellen C-x 2. Ja, diese Terminologie ist verwirrend. Es ist älter als die meisten GUI-Systeme, daher ist es verständlich, wenn es immer noch verwirrend ist.

Sobald wir jedoch wissen, dass es sich um Fenster handelt, können wir die gewünschten Änderungen vornehmen. Um alle Fenster außer dem Fenster zu entfernen, in dem sich der Punkt befindet, führen Sie ihn aus C-x 1und ordnen Sie ihn zu delete-other-windows.

Um zu dem zurückzukehren, was Sie zuvor hatten, gibt es eine ziemlich nützliche Bibliothek namens Winner-Mode . Damit können Sie Änderungen an Ihrer Fensterkonfiguration rückgängig machen und wiederholen.

Aktivieren Sie also den Winner-Modus mit M-x winner-modeund C-x 1drücken Sie nach dem Anruf , C-c leftum die Änderung an der Fensterkonfiguration rückgängig zu machen und die Fenster wieder auf den ursprünglichen Wert zurückzusetzen.

Wenn Sie den Winner-Modus dauerhaft aktivieren möchten, fügen Sie (winner-mode)Ihre Init-Datei ein.

zck
quelle
7

Die Verwendung winner-modeist praktisch, aber wenn Sie wirklich nur zwischen einem Fenster und einer Konfiguration mit mehreren Fenstern hin und her wechseln möchten, habe ich Folgendes verwendet:

(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)))

Sie können dies an z. B. binden C-x 1und denselben Schlüssel verwenden, um die Status umzuschalten.

Glucas
quelle
1

Ich benutze das Folgende, kopiert aus dem Web. Auf diese Weise können Sie schnell Ihre aktuelle Fensterkonfiguration verlassen. Nachdem Sie fertig sind, verwenden Sie exit-recursive-edit, um zurück zu kommen.

;; 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))))
Clemera
quelle