เมื่อเปิดไฟล์ใหม่ที่มีไดเรกทอรีหลักยังไม่มีฉันเปิดหน้าต่างเชลล์หรือบัฟเฟอร์เชลล์ Emacs แล้วmkdirไดเรกทอรีในนั้น ฉันพบว่ามันยุ่งยาก มีวิธีที่ง่ายกว่านี้ไหม?
เมื่อเปิดไฟล์ใหม่ที่มีไดเรกทอรีหลักยังไม่มีฉันเปิดหน้าต่างเชลล์หรือบัฟเฟอร์เชลล์ Emacs แล้วmkdirไดเรกทอรีในนั้น ฉันพบว่ามันยุ่งยาก มีวิธีที่ง่ายกว่านี้ไหม?
คำตอบ:
คุณไม่จำเป็นต้องทำอย่างนั้นถ้าเป็นคำถามของคุณ
C-x C-f /some/new/directory/newfile.txt
Emacs พิมพ์ข้อความแจ้งให้คุณทราบว่าไดเรกทอรีที่ยังไม่มี:/some/new/directory/Use M-x make-directory RET RET to create the directory and its parents
newfile.txtแทรกข้อความลงในบัฟเฟอร์ใหม่สำหรับไฟล์ใหม่
C-x C-s เพื่อบันทึกไฟล์
Emacs ถามคุณว่าคุณต้องการสร้างไดเรกทอรีระดับกลางที่ขาดหายไปหรือไม่ (เช่นnew/directory/คุณกดปุ่มy"ใช่"
ไม่ยุ่งยากมาก IMO UI ต้องขอคำยืนยันจากคุณเนื่องจากคุณอาจพิมพ์ชื่อไดเรกทอรีที่มีอยู่ผิด ๆ ได้อย่างง่ายดาย
yกับ
idoผู้ใช้ido-find-file) และป้อนเส้นทางที่ไม่มีอยู่จริงmake dir ใหม่?) REThitเมื่ออยู่ในสถานการณ์นี้ emacs ควรจะบอกสิ่งที่คุณต้องการ:
use M-x make-directory RET RET to create the directory and its parents
มันยุ่งยากไหม?
ฉันจะบอกว่าใช่มันเป็น
หากคุณต้องการfind-fileสร้างไดเรกทอรีหลักโดยอัตโนมัติเมื่อไม่มีอยู่คุณสามารถทำสิ่งต่อไปนี้ในไฟล์ init ของคุณ
(defun my-find-file (orig-fun &rest args)
(let* ((filename (car args))
(directory (file-name-directory filename)))
(if (not (file-directory-p directory))
(make-directory directory t))
(apply orig-fun args)))
(advice-add 'find-file :around 'my-find-file)
ท้ายที่สุด Emacs ได้รับการออกแบบให้สามารถขยายและปรับแต่งได้
อ้างอิง:
M-x make-dirtab(ทดสอบจากemacs -Qเพื่อให้แน่ใจว่าใช้งานได้)RETRETและมันจะสร้างไดเรกทอรีโดยไม่ต้องมีการแจ้งเตือนใด ๆ เพิ่มเติม