Maneira rápida de fechar todas as janelas, exceto uma, e depois reverter para a configuração anterior da janela?


12

Quero fechar todas as minhas janelas, exceto a atual, e maximizar o quadro para que eu possa ver rapidamente tudo no buffer dessa janela e depois reverter para a configuração anterior da janela. Como eu faria isso?


Este link pode ajudar.
Nsukami _

3
Não está claro o que você quer dizer com "fechar" ou "ver tudo nesse único quadro". (Elevar e) maximizar o quadro em que você está interessado não permitirá que você veja tudo nesse quadro? Os outros quadros ainda estariam lá, mas estariam ocultos atrás do quadro maximizado. Isso é trivial de realizar, se atender à sua necessidade.
Desenhou

1
Só para ter certeza, você está usando a definição Emacs do quadro de palavras , certo? A coisa de nível superior que é gerenciada pelo seu gerenciador de janelas?
zck 23/02

@zck Quero dizer os buffers visíveis individuais nos quais minha tela foi dividida. Quero maximizar um buffer para preencher a tela inteira e desfazê-lo para que eu possa ver todos os buffers em sua configuração original. Peço desculpas se eu tenho o errado vocabulário, tentei procurá-lo e escolher a melhor palavra para uso
Andrew

Respostas:


14

As diferentes seções do texto que você vê no seu Emacs são janelas . Você pode, por exemplo, criar uma nova janela com C-x 2. Sim, essa terminologia é confusa. Ele é anterior à maioria dos sistemas de GUI, portanto é compreensível, ainda que confuso.

Mas uma vez que sabemos que estamos falando de janelas, podemos fazer as alterações desejadas. Para se livrar de todas as janelas, exceto aquela em que o ponto está, execute C-x 1, mapeado para delete-other-windows.

Então, voltando ao que você tinha antes, há uma biblioteca bastante útil chamada modo vencedor . Permite desfazer e refazer alterações na configuração da janela.

Portanto, ative o modo vencedor com M-x winner-modee, depois que você ligar C-x 1, pressione C-c leftpara desfazer a alteração na configuração da janela, restaurando as janelas para o que eram.

Se você deseja habilitar permanentemente o modo vencedor, insira (winner-mode)seu arquivo init.


7

O uso winner-modeé útil, mas se você realmente quiser alternar entre uma janela e uma configuração de várias janelas, eis uma coisa que eu usei 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)))

Você pode vincular isso a, por exemplo, C-x 1e usar a mesma chave para alternar os estados.


1

Eu uso o seguinte, copiado da web. É uma maneira rápida de deixar sua configuração atual da janela. Depois de terminar, use exit-recursive-editpara voltar.

;; 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))))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.