Modo rapido per chiudere tutte le finestre tranne una, quindi tornare alla configurazione della finestra precedente?


12

Voglio chiudere tutte le mie finestre tranne quella corrente e massimizzare il frame in modo da poter vedere rapidamente tutto nel buffer in quella finestra, quindi tornare alla mia precedente configurazione della finestra. Come potrei fare per fare questo?


Questo link può essere d'aiuto.
Nsukami _

3
Non è molto chiaro cosa intendi per "chiudere" o "vedere tutto in quell'unica cornice". (Alzare e) massimizzare il frame a cui sei interessato non ti farebbe vedere tutto in quel frame? Gli altri frame sarebbero ancora lì, ma sarebbero nascosti dietro il frame ingrandito. Questo è banale da realizzare, se si adatta alle tue necessità.
Ha

1
Giusto per essere sicuro, stai usando la definizione Emacs del word frame , giusto? La cosa di livello superiore che viene gestita dal tuo gestore di finestre?
zck,

@zck Intendo i singoli buffer visibili in cui ho diviso il mio schermo. Voglio massimizzare un buffer per riempire l'intero schermo, quindi annullarlo in modo da poter vedere tutti i buffer nella loro configurazione originale. Chiedo scusa se ho sbagliato il vocabolario, ho cercato di cercarlo e scegliere la parola migliore da usare
Andrew

Risposte:


14

Le diverse sezioni di testo che vedi in Emacs sono finestre . Ad esempio, puoi creare una nuova finestra con C-x 2. Sì, questa terminologia è confusa. Precede la maggior parte dei sistemi di interfaccia grafica, quindi è comprensibile se ancora confuso.

Ma una volta che sappiamo che stiamo parlando di Windows, possiamo fare le modifiche che desideri. Per sbarazzarsi di tutte le finestre tranne quella in cui si trova il punto, eseguire C-x 1, mappare delete-other-windows.

Quindi, per tornare a quello che avevi prima, c'è una libreria piuttosto utile chiamata modalità vincitore . Ti consente di annullare e ripetere le modifiche alla configurazione della finestra.

Quindi abilita la modalità vincitore con M-x winner-modee, dopo aver chiamato C-x 1, puoi premere C-c leftper annullare la modifica alla configurazione della finestra, riportando le finestre su come erano.

Se vuoi abilitare permanentemente la modalità vincitore, inserisci il (winner-mode)tuo file init.


7

L'uso winner-modeè utile, ma se vuoi davvero passare da una finestra a una configurazione multi-finestra, ecco qualcosa che ho usato prima:

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

Si potrebbe legarsi che ad esempio C-x 1e utilizzare lo stesso codice per alternare gli stati.


1

Uso quanto segue, copiato dal web. È un modo rapido per uscire dalla configurazione della finestra corrente. Dopo aver finito, utilizzare exit-recursive-editper tornare indietro.

;; 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))))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.