emacs - แบ่งเฟรมโดยอัตโนมัติในการสร้าง


6

ฉันมักจะใช้ Emacs ในการกำหนดค่าหนึ่งเฟรมสองหน้าต่าง (นั่นคือหน้าต่าง OS หนึ่งหน้าต่างที่มี Emacs สองหน้าต่างอยู่ข้างใน) ฉันมีdefault-frame-alistชุดเพื่อให้เฟรมปรากฏในขนาดที่เหมาะสม แต่จากนั้นฉันต้องแยกมันด้วยตัวเอง (ด้วยC-x 3) มีวิธีบอกให้ Emacs ทำเช่นนั้นโดยอัตโนมัติเมื่อสร้างเฟรมใหม่หรือไม่?

แก้ไข:หากฉันเกิดขึ้นเพื่อสร้างเฟรมใหม่ในบางจุดฉันต้องการให้มันแยกในแนวตั้งเช่นกัน ดังนั้น(when window-system (split-window-horizontally))ในการ.emacsจะไม่ทำงานเพราะมันจะใช้กับการเริ่มต้นเฟรม สิ่งที่ฉันคิดว่าฉันต้องเป็นตะขอที่ทำงานในบริบทของแต่ละเฟรมใหม่หลังจากdefault-frame-alistถูกนำไปใช้

คำตอบ:


5

เพียงเพิ่ม

(split-window-horizontally)

ไปยัง.emacsไฟล์ของคุณ

ด้วยC-h k คุณสามารถตรวจสอบว่าฟังก์ชัน Emacs ใดที่เชื่อมโยงกับทางลัดของคุณ มันมีประโยชน์มากถ้าคุณไม่คุ้นเคยกับฟังก์ชั่น Emacs มากพอ


นี่เป็นบิตที่ไม่เจาะจงเกินไป ตัวอย่างเช่นฉันไม่ต้องการให้สิ่งนี้เกิดขึ้นถ้าฉันใช้ Emac ในเทอร์มินัล (ซึ่งฉันทำเป็นครั้งคราว)
zwol

@ แซคมันง่าย ใส่ที่เป็นifเช่น(if (window-system) (split-window-horizontally))
kindahero

ฉันใช้เวลานานกว่าจะคิดออกว่าทำไมฉันไม่ชอบคำตอบนี้ แต่ในที่สุดฉันก็ทำ; โปรดดูคำถามที่แก้ไข
zwol

2

เพื่อป้องกันการแบ่งบัฟเฟอร์แนวตั้งโดยอัตโนมัติเมื่อเช่นการเยี่ยมชมรายการใน grep บัฟเฟอร์การตั้งค่า

(setq split-height-threshold nil split-width-threshold nil)

มีประโยชน์


1

มันไม่ใช่สิ่งที่คุณต้องการ แต่เป็นวิธีที่ดีที่จะได้หน้าต่างสองบานเคียงข้างกัน

คุณสามารถตั้งค่าตัวแปรsplit-height-thresholdและการเปลี่ยนแปลงลักษณะการทำงานของsplit-width-threshold split-window-sensiblyด้วยวิธีนี้ทุกครั้งที่มีหน้าต่างใหม่ผุดขึ้นพูดโดยการเติมข้อความอัตโนมัติหรือโดยการกดoบัฟเฟอร์ที่บัฟเฟอร์เฟรมจะถูกแบ่งตามแนวนอน

;; only split horizontally
(setq split-height-threshold nil
      split-width-threshold 0)

เฟรมใหม่จะยังคงเริ่มต้นด้วยหน้าต่างเดียวเท่านั้น แต่ครั้งแรกที่หน้าต่างใหม่ปรากฏขึ้นคุณจะได้รับหน้าต่างหนึ่งทางด้านซ้ายและอีกเฟรมทางด้านขวา

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