วิธีที่รวดเร็วในการปิดทั้งหมดยกเว้นหน้าต่างเดียวและกลับไปสู่การตั้งค่าหน้าต่างก่อนหน้าหรือไม่


13

ฉันต้องการปิดหน้าต่างทั้งหมดของฉัน แต่หน้าต่างปัจจุบันและเพิ่มเฟรมให้ใหญ่ที่สุดเพื่อที่ฉันจะได้เห็นทุกอย่างในบัฟเฟอร์ในหน้าต่างนั้นอย่างรวดเร็วจากนั้นกลับสู่การตั้งค่าหน้าต่างก่อนหน้าของฉัน ฉันจะทำสิ่งนี้อย่างไร


ลิงค์นี้อาจช่วยได้
Nsukami _

3
ไม่ชัดเจนว่าคุณหมายถึงอะไรโดย "ปิด" หรือ "ดูทุกอย่างในกรอบเดียว" (เพิ่มและ) เพิ่มเฟรมที่คุณสนใจไม่ให้คุณเห็นทุกอย่างในเฟรมนั้นหรือไม่ เฟรมอื่น ๆ จะยังอยู่ที่นั่น แต่จะซ่อนอยู่หลังเฟรมที่ขยายใหญ่สุด นี่เป็นเรื่องเล็กน้อยที่จะทำให้สำเร็จถ้ามันเหมาะกับความต้องการของคุณ
ดึง

1
เพียงเพื่อให้แน่ใจว่าคุณกำลังใช้คำจำกัดความของ Emacs ของกรอบคำใช่ไหม? สิ่งที่ระดับสูงสุดที่จัดการโดยตัวจัดการหน้าต่างของคุณ?
zck

@zck ฉันหมายถึงบัฟเฟอร์ที่มองเห็นแต่ละตัวที่ฉันแบ่งหน้าจอ ฉันต้องการเพิ่มบัฟเฟอร์ให้เต็มหน้าจอให้เต็มหน้าจอแล้วเลิกทำเพื่อให้ฉันเห็นบัฟเฟอร์ทั้งหมดในการกำหนดค่าดั้งเดิม ฉันขอโทษถ้าฉันเข้าใจผิดฉันพยายามที่จะค้นหาและเลือกคำที่ดีที่สุดที่จะใช้
Andrew

คำตอบ:


15

ส่วนที่แตกต่างกันของข้อความที่คุณเห็นใน Emacs ของคุณมีหน้าต่าง C-x 2คุณสามารถยกตัวอย่างเช่นการสร้างหน้าต่างใหม่ที่มี ใช่คำศัพท์นี้ทำให้เกิดความสับสน มันมาก่อนระบบ GUI ส่วนใหญ่ดังนั้นจึงเป็นที่เข้าใจได้หากยังคงสับสน

แต่เมื่อเรารู้ว่าเรากำลังพูดถึง windows เราสามารถทำการเปลี่ยนแปลงที่คุณต้องการ เพื่อกำจัดของหน้าต่างทั้งหมดยกเว้นหนึ่งที่จุดในรันC-x 1, delete-other-windowsแมปไป

แล้วสำหรับการกลับไปสู่สิ่งที่คุณมีก่อนที่จะมีห้องสมุดที่เรียกว่ามีประโยชน์สวยชนะโหมด มันช่วยให้คุณสามารถเลิกทำและทำซ้ำการเปลี่ยนแปลงการกำหนดค่าหน้าต่างของคุณ

ดังนั้นเปิดใช้งานโหมดผู้ชนะด้วยM-x winner-modeและหลังจากที่คุณโทรC-x 1แล้วคุณสามารถกดC-c leftเพื่อเลิกทำการเปลี่ยนแปลงการกำหนดค่าหน้าต่างตั้งค่าหน้าต่างกลับไปเป็นแบบเดิม

หากคุณต้องการเปิดใช้งานโหมดผู้ชนะอย่างถาวรให้ใส่(winner-mode)ไฟล์ init ของคุณ


7

การใช้winner-modeมีประโยชน์ แต่ถ้าคุณต้องการพลิกกลับไปกลับมาระหว่างหน้าต่างเดียวและหน้าต่างหลายหน้าต่างนี่คือสิ่งที่ฉันเคยใช้มาก่อน:

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

คุณสามารถผูกสิ่งนั้นกับเช่นC-x 1และใช้คีย์เดียวกันนั้นเพื่อสลับสถานะ


1

ฉันใช้สิ่งต่อไปนี้คัดลอกมาจากเว็บ เป็นวิธีที่รวดเร็วในการออกจากการกำหนดค่าหน้าต่างปัจจุบันของคุณ หลังจากคุณใช้งานเสร็จแล้วexit-recursive-editให้กลับมา

;; 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))))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.