Jak zmienić okna Emacsa z podziału pionowego na poziomy?

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

Czy istnieje sposób na przejście na

Window A : Window B

Czy istnieje sposób przełączania widoku bez zamykania okien?

Nacięcie
źródło
1
W dzisiejszych dużych ekranach dlaczego miałoby się chcieć uruchamiać coś innego niż równoległe okna? Używam sześciu okien rozmieszczonych na dwóch monitorach - używam github.com/Lindydancer/multicolumn, aby skonfigurować okna, kiedy uruchamiam Emacsa i skonfigurowałem większość moich pakietów do ponownego użycia istniejących okien.
Lindydancer

Odpowiedzi:

13

Oto prosta funkcja, która przełącza się między podziałem poziomym i pionowym. Zakłada się, że masz tylko dwa okna i nie zmienia rozmiaru:

(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
źródło
14

Alternatywnie, tranpose-framena EmacsWiki jest pakiet , który pozwoli ci transponować całą ramkę, a także wykonywać inne transformacje (obrót o 180 stopni; obrót o 90 stopni w prawo lub w lewo; odwracanie w poziomie lub w pionie).

Dmitry
źródło
9

transpose-framePakiet jest dostępny na MELPA również.

Użyj M-x transpose-framelub powiąż z czymś, aby to osiągnąć.

Salotz
źródło