วิธีการตั้งค่าหน้าต่างเริ่มต้นเมื่อเริ่มต้น?


18

ทุกครั้งที่ฉันเปิด Emacs ฉันมักจะตั้งค่า 3 windows โดยทำC-x 3( split-window-right) และจากนั้นC-x2( split-window-below) หลังจากนั้นฉันต้องสลับไปที่แต่ละหน้าต่างเพื่อเปิดไฟล์ที่ฉันต้องการแก้ไข

ฉันจะตั้งสิ่งนี้ให้ทำโดยอัตโนมัติได้อย่างไร

มีวิธีให้ Emacs กู้คืนการจัดหน้าจอเดียวกัน (windows และไฟล์) จากการใช้งานครั้งสุดท้ายหรือไม่?

คำตอบ:


13

ตั้งแต่ Emacs 24.4 คุณสามารถใช้สก์ท็อปเซฟโหมด มันเป็นส่วนหนึ่งของ Emacs สำหรับทุกวัย แต่เลย์เอาต์หน้าต่างถูกบันทึกและกู้คืนตั้งแต่รุ่น 24.4 เท่านั้น

เพียงเพิ่มบรรทัดนี้ในไฟล์ init ของคุณ:

(desktop-save-mode 1)

3
นี่จะคืนค่าไฟล์จากเซสชันก่อนหน้า แต่จะไม่คืนค่าเค้าโครงหน้าต่าง
itsjeyd

1
ไม่ฉันได้ทำการทดสอบแล้ว คู่มือ Emacs : เมื่อคุณบันทึกเดสก์ท็อป Emacs - บัฟเฟอร์ชื่อไฟล์โหมดหลักตำแหน่งบัฟเฟอร์ และอื่น ๆ - จากนั้นเซสชัน Emacs ที่ตามมาจะโหลดเดสก์ท็อปที่บันทึกไว้ใหม่
Sviridov Alexander

3
"ตำแหน่งบัฟเฟอร์" หมายถึงตำแหน่งของจุด (เคอร์เซอร์) ในบัฟเฟอร์ที่กำหนด desktop-save-modeใช่นี้จะถูกเรียกคืนด้วย เค้าโครงหน้าต่างหมายถึงจำนวนหน้าต่างที่จะแสดงในปัจจุบันและวิธีจัดวางตำแหน่ง desktop-save-modeไม่รักษาเค้าโครงนี้
itsjeyd

3
ใช่ "เค้าโครงหน้าต่าง" และ "ตำแหน่งบัฟเฟอร์" เป็นสิ่งที่แตกต่างกันคุณถูกต้อง แต่เค้าโครงหน้าต่างของฉันถูกกู้คืน ดูเหมือนว่าการบันทึกโครงร่างหน้าต่างถูกเพิ่มใน emacs-snapshot
Sviridov Alexander

1
@pors ดูเหมือนว่าไม่ใช่กรณีที่คุณใช้ Emacs (24.4 ขึ้นไป) ในโหมดเทอร์มินัล ไม่มีการบันทึก / เรียกคืนการกำหนดค่าหน้าต่าง
skyork

7

เขียนฟังก์ชันใกล้กับที่อยู่ในไฟล์ init ของคุณคุณอาจต้องแก้ไขเล็กน้อยเพื่อให้เหมาะกับความต้องการของคุณ:

;; layout definition
(defun my-startup-layout ()
 (interactive)
 (delete-other-windows)
 (split-window-horizontally) ;; -> |
 (next-multiframe-window)
 (find-file "~/.emacs.d/init.el")
 (split-window-vertically) ;;  -> --
 (next-multiframe-window)
 (find-file "~/.emacs.d/init_settings.el")
 (next-multiframe-window)
 (dired "~")
)

;; execute the layout
(my-startup-layout )

มีวิธีใดที่ Emacs จะกู้คืนการจัดระเบียบหน้าจอเดียวกัน (windows และไฟล์) จากการใช้งานครั้งล่าสุด?

คุณควรดูแพ็คเกจการจัดวาง


6

คุณสามารถใช้workgroups2เพื่อจัดการเดสก์ท็อปของคุณ จาก README บน GitHub:

Workgroups เป็นผู้จัดการเซสชันสำหรับ Emacs

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

คุณยังสามารถกู้คืนบัฟเฟอร์เช่น: org-Agenda, shell, magit-status, help

หากคุณมีMELPAM-x package-install RET workgroups2 RETพื้นที่เก็บข้อมูลที่เปิดใช้งานคุณสามารถติดตั้งแพคเกจนี้ผ่านทาง

การตั้งค่าพื้นฐานคือ:

(require 'workgroups2)
(workgroups-mode 1) ; This should go at the end of your init file

เมื่อคุณรีสตาร์ท Emacs เป็นครั้งแรกหลังจากเพิ่มรหัสนี้ลงในไฟล์ init ของคุณworkgroups2จะสร้างเวิร์กกรุ๊ปให้คุณโดยอัตโนมัติ คุณสามารถตรวจสอบว่าสิ่งนี้สำเร็จโดยการตรวจสอบ*Messages*บัฟเฟอร์สำหรับข้อมูลต่อไปนี้:

Workgroups Mode: on
Switched: First workgroup
Created: First workgroup  ( -<{ 0: First workgroup }>- )

จากจุดนี้เป็นต้นไป Emacs จะบันทึกการกำหนดค่าปัจจุบันของหน้าต่างและไฟล์โดยอัตโนมัติเมื่อออกจากระบบและเรียกคืนในครั้งถัดไปที่เริ่มทำงาน


2

ฉันใช้บางสิ่งบางอย่างตามแบบจำลองของ . emacs.d ของ sanityinc มันใช้desktop-save-modeและยังฉลาดพอที่จะใช้frame-restoreกับ emacs เวอร์ชั่นเก่า จาก readme สำหรับframe-restoreจากpackage-list-packages:

บันทึกและกู้คืนพารามิเตอร์ของเฟรม Emacs

เพียงแค่เรียกframe-restore' in yourinit.el ':

(กรอบเรียกคืนโหมด)

โปรดทราบว่าตั้งแต่ r113242 โหมดบันทึกเดสก์ทอปในตัวจะกู้คืนเฟรม หากคุณกำลังใช้งานสร้าง snapshot ของ Emacs ช้ากว่าการแก้ไขนี้ ขอแนะนำให้คุณใช้โหมดบันทึกบนเดสก์ท็อปแทน:

(สก์ท็อปเซฟโหมด)

โหมดการคืนค่าเฟรมจะแสดงคำเตือนตัวหนาหากเปิดใช้งานในโครงสร้าง Emacs ซึ่งโหมดการบันทึกบนเดสก์ท็อปสามารถกู้คืนเฟรมได้

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