Bagaimana cara mengubah jendela Emacs dari split vertikal ke split horizontal?

26
Window A
++++++++
Window B

Apakah ada cara untuk beralih

Window A : Window B

Apakah ada cara untuk mengalihkan tampilan tanpa menutup jendela?

Nick
sumber
1
Dengan layar besar saat ini, mengapa orang ingin menjalankan sesuatu selain jendela berdampingan? Saya menggunakan enam jendela yang tersebar di dua monitorn - Saya menggunakan github.com/Lindydancer/multicolumn untuk mengatur windows ketika saya memulai Emacs dan telah mengkonfigurasi sebagian besar paket saya untuk menggunakan kembali windows yang ada.
Lindydancer
3
Kemungkinan duplikat dari orientasi Pemisahan jendela
sakelar

Jawaban:

13

Berikut adalah fungsi sederhana yang akan beralih antara pemisahan horizontal dan vertikal. Diasumsikan Anda hanya memiliki dua jendela, dan tidak melakukan pengubahan ukuran:

(defun window-split-toggle ()
  "Toggle between horizontal and vertical split with two windows."
  (interactive)
  (if (> (length (window-list)) 2)
      (error "Can't toggle with more than 2 windows!")
    (let ((func (if (window-full-height-p)
                    #'split-window-vertically
                  #'split-window-horizontally)))
      (delete-other-windows)
      (funcall func)
      (save-selected-window
        (other-window 1)
        (switch-to-buffer (other-buffer))))))
Dan
sumber
14

Atau, ada tranpose-framepaket pada EmacsWiki yang akan memungkinkan Anda untuk mengubah posisi seluruh bingkai, serta melakukan transformasi lainnya (memutar dengan 180 derajat; memutar 90 derajat searah jarum jam atau berlawanan arah jarum jam; flip secara horizontal atau vertikal).

Dmitry
sumber
9

The transpose-framepaket tersedia di MELPA juga.

Gunakan M-x transpose-frame, atau ikat ke sesuatu untuk mencapai ini.

salotz
sumber