สลับการวางแนวการแบ่งหน้าต่างวิธีที่เร็วที่สุด


16

สมมติว่าคุณเปิดบัฟเฟอร์สองอันเช่นนี้:

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

เป็นวิธีที่เร็วที่สุดในการสลับบัฟเฟอร์เพื่อให้คุณได้รับสิ่งนี้:

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

stackoverflow.com/a/10546694 ไลบรารีเฟรมเวิร์ก ข้อจำกัดความรับผิดชอบ - ยังไม่ได้ลอง
Faheem Mitha

มีหน้า wiki ในหัวข้อนี้: emacswiki.org/emacs/ToggleWindowSplit
Chris Martin

ดูemacs.stackexchange.com/q/5371 ; โดยเฉพาะหนึ่งคำตอบที่กล่าวถึงtranspose-frameใน MELPA
TooTone

คำตอบ:


15

นี่คือ defun ที่จะทำสิ่งที่คุณกำลังมองหา:

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

(คัดลอกมาจากMagnars .emacs.d )

บวกถ้าคุณเรียกมันอีกครั้งมันจะแบ่งหน้าต่างของคุณในแนวตั้งเดิม


มันจะดีถ้าสิ่งนี้สามารถรักษาความสัมพันธ์ขนาดสัมพันธ์ของหน้าต่างทั้งสอง ฉันมักจะรักษาหน้าต่าง "สั้น" ที่ไม่สม่ำเสมอที่ด้านล่างและเมื่อสลับไปมามันจะมีประโยชน์ในการรักษาขนาดสัมพัทธ์นี้ แม้ว่าหน้าต่างแนวตั้งแคบอาจมีประโยชน์น้อยกว่า
b4hand

1
ฉันไม่สามารถบอกคุณได้ว่าฉันใช้อันนี้กี่ครั้ง มีประโยชน์มาก
Edgar Aroutiounian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.