Wechseln Sie auf schnellste Weise die Fensterausrichtung


16

Angenommen, Sie haben zwei Puffer wie folgt geöffnet:

------------------------------------
            |                      |
  buffer 1  |        buffer 2      |       
            |                      |
------------------------------------

Was ist der schnellste Weg, um die Puffer so zu vertauschen, dass Sie folgendes erhalten:

------------------------------------
           buffer 1                |
                                   |
------------------------------------
            buffer 2               |
                                   |
------------------------------------

stackoverflow.com/a/10546694 . transponierte Rahmenbibliothek. Haftungsausschluss - habe es nicht ausprobiert.
Faheem Mitha

Es gibt eine Wiki-Seite zu diesem Thema: emacswiki.org/emacs/ToggleWindowSplit
Chris Martin

Siehe emacs.stackexchange.com/q/5371 ; Insbesondere erwähnt eine Antwort transpose-frameMELPA.
TooTone

Antworten:


15

Hier ist ein Defun, der genau das macht, wonach Sie suchen:

(defun toggle-window-split ()
  (interactive)
  (if (= (count-windows) 2)
      (let* ((this-win-buffer (window-buffer))
             (next-win-buffer (window-buffer (next-window)))
             (this-win-edges (window-edges (selected-window)))
             (next-win-edges (window-edges (next-window)))
             (this-win-2nd (not (and (<= (car this-win-edges)
                                         (car next-win-edges))
                                     (<= (cadr this-win-edges)
                                         (cadr next-win-edges)))))
             (splitter
              (if (= (car this-win-edges)
                     (car (window-edges (next-window))))
                  'split-window-horizontally
                'split-window-vertically)))
        (delete-other-windows)
        (let ((first-win (selected-window)))
          (funcall splitter)
          (if this-win-2nd (other-window 1))
          (set-window-buffer (selected-window) this-win-buffer)
          (set-window-buffer (next-window) next-win-buffer)
          (select-window first-win)
          (if this-win-2nd (other-window 1))))))

(Schamlos aus Magnars .emacs.d kopiert )

Wenn Sie es erneut aufrufen, werden Ihre Fenster in der ursprünglichen vertikalen Ausrichtung geteilt.


Es wäre schön, wenn dadurch das relative Größenverhältnis der beiden Fenster erhalten würde. Ich behalte oft ein unebenes "kurzes" Fenster am unteren Rand, und beim Hin- und Herwechseln wäre es hilfreich, diese relative Größe beizubehalten. Obwohl ein schmales vertikales Fenster wahrscheinlich weniger nützlich ist.
b4hand

1
Ich kann dir nicht sagen, wie oft ich das benutze. So hilfreich.
Edgar Aroutiounian
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.