¿Forma rápida de cerrar todas las ventanas menos una, y luego volver a la configuración de la ventana anterior?


12

Quiero cerrar todas mis ventanas excepto la actual y maximizar el marco para poder ver rápidamente todo en el búfer en esa ventana, y luego volver a la configuración de mi ventana anterior. ¿Cómo haría para hacer esto?


Este enlace puede ayudar.
Nsukami _

3
No está muy claro qué quiere decir con "cerrar" o "ver todo en ese marco". ¿(Elevar y) maximizar el marco en el que está interesado no le permitiría ver todo en ese marco? Los otros cuadros seguirían allí, pero estarían ocultos detrás del cuadro maximizado. Esto es trivial de lograr, si se ajusta a su necesidad.
Dibujó

1
Solo para asegurarse, está utilizando la definición de Emacs del marco de palabras , ¿verdad? ¿Lo de nivel superior que administra tu administrador de ventanas?
zck

@zck Me refiero a los búferes visibles individuales en los que tengo dividida mi pantalla. Quiero maximizar un búfer para llenar toda la pantalla, y luego deshacerlo para poder ver todos los búferes en su configuración original. Me disculpo si entendí mal el vocabulario, traté de buscarlo y elegir la mejor palabra para usar
Andrew

Respuestas:


14

Las diferentes secciones de texto que ves en tu Emacs son ventanas . Puede, por ejemplo, crear una nueva ventana con C-x 2. Sí, esta terminología es confusa. Es anterior a la mayoría de los sistemas GUI, por lo que es comprensible si aún es confuso.

Pero una vez que sabemos que estamos hablando de Windows, podemos hacer los cambios que desee. Para deshacerse de todas las ventanas excepto en la que está ese punto, ejecutar C-x 1, mapeado delete-other-windows.

Luego, para volver a lo que tenía antes, hay una biblioteca bastante útil llamada modo ganador . Le permite deshacer y rehacer cambios en la configuración de su ventana.

Por lo tanto, habilite el modo ganador con M-x winner-mode, y luego, después de llamar C-x 1, puede presionar C-c leftpara deshacer el cambio en la configuración de la ventana, configurando las ventanas nuevamente a lo que eran.

Si desea habilitar permanentemente el modo ganador, (winner-mode)ingrese su archivo init.


7

El uso winner-modees útil, pero si realmente solo desea alternar entre una ventana y una configuración de múltiples ventanas, aquí hay algo que he usado antes:

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

Podría vincular eso a, por ejemplo, C-x 1y usar esa misma tecla para alternar los estados.


1

Yo uso lo siguiente, copiado de la web. Es una forma rápida de salir de su configuración de ventana actual. Una vez que haya terminado, use exit-recursive-editpara regresar.

;; 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))))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.