Cara cepat untuk menutup semua kecuali satu jendela, dan kemudian kembali ke pengaturan jendela sebelumnya?

12

Saya ingin menutup semua jendela saya tetapi yang sekarang dan memaksimalkan bingkai sehingga saya dapat dengan cepat melihat semua yang ada di buffer di satu jendela itu, dan kemudian kembali ke pengaturan jendela sebelumnya. Bagaimana saya bisa melakukan ini?

Andrew
sumber
Tautan ini dapat membantu.
Nsukami _
3
Tidak terlalu jelas apa yang Anda maksud dengan "tutup" atau "lihat semuanya dalam satu bingkai". Apakah (meningkatkan dan) memaksimalkan bingkai yang Anda minati tidak akan membuat Anda melihat semuanya dalam bingkai itu? Bingkai lainnya masih ada di sana, tetapi akan disembunyikan di balik bingkai maksimal. Ini sepele untuk diselesaikan, jika itu sesuai dengan kebutuhan Anda.
Drew
1
Hanya untuk memastikan, Anda menggunakan definisi Emacs dari bingkai kata , kan? Hal tingkat atas yang dikelola oleh manajer jendela Anda?
zck
@zck Maksud saya buffer individu yang terlihat di mana saya membagi layar saya. Saya ingin memaksimalkan satu buffer untuk mengisi seluruh layar, dan kemudian membatalkannya sehingga saya bisa melihat semua buffer dalam konfigurasi aslinya. Saya minta maaf jika saya salah kosa kata, saya mencoba mencarinya dan memilih kata terbaik untuk digunakan
Andrew
2
Untuk memperjelas terminologi, lihat: Apa perbedaan antara buffer, file, jendela, dan bingkai?
Dan

Jawaban:

14

Bagian berbeda dari teks yang Anda lihat di Emacs Anda adalah windows . Anda dapat, misalnya, membuat jendela baru dengan C-x 2. Ya, terminologi ini membingungkan. Itu mendahului sebagian besar sistem GUI, jadi bisa dimengerti jika masih membingungkan.

Tapi begitu kita tahu kita berbicara tentang windows, kita bisa melakukan perubahan yang Anda inginkan. Untuk menyingkirkan semua jendela kecuali jendela yang ada di dalamnya C-x 1, jalankan , dipetakan ke delete-other-windows.

Kemudian, untuk kembali ke apa yang Anda miliki sebelumnya, ada perpustakaan yang sangat berguna yang disebut mode pemenang . Ini memungkinkan Anda membatalkan dan mengulangi perubahan pada konfigurasi jendela Anda.

Jadi aktifkan mode pemenang dengan M-x winner-mode, dan kemudian setelah Anda menelepon C-x 1, Anda dapat menekan C-c leftuntuk membatalkan perubahan ke konfigurasi jendela, mengatur kembali windows ke apa itu.

Jika Anda ingin mengaktifkan mode pemenang secara permanen, masukkan (winner-mode)file init Anda.

kawan
sumber
7

Menggunakan winner-modesangat mudah, tetapi jika Anda benar-benar hanya ingin bolak-balik antara satu jendela dan konfigurasi multi-jendela, berikut adalah sesuatu yang saya gunakan sebelumnya:

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

Anda bisa mengikatnya ke mis C-x 1dan menggunakan kunci yang sama untuk beralih negara.

glukas
sumber
1

Saya menggunakan yang berikut ini, disalin dari web. Ini cara cepat untuk meninggalkan konfigurasi jendela Anda saat ini. Setelah Anda selesai gunakan exit-recursive-edituntuk kembali.

;; 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
sumber