การเปิดไฟล์ใหม่ที่ไม่มีไดเรกทอรีหลักอยู่


9

เมื่อเปิดไฟล์ใหม่ที่มีไดเรกทอรีหลักยังไม่มีฉันเปิดหน้าต่างเชลล์หรือบัฟเฟอร์เชลล์ Emacs แล้วmkdirไดเรกทอรีในนั้น ฉันพบว่ามันยุ่งยาก มีวิธีที่ง่ายกว่านี้ไหม?

คำตอบ:


16

คุณไม่จำเป็นต้องทำอย่างนั้นถ้าเป็นคำถามของคุณ

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 ต้องขอคำยืนยันจากคุณเนื่องจากคุณอาจพิมพ์ชื่อไดเรกทอรีที่มีอยู่ผิด ๆ ได้อย่างง่ายดาย


คุณสามารถใช้M-x make-dir tab(ทดสอบจากemacs -Qเพื่อให้แน่ใจว่าใช้งานได้) RET RETและมันจะสร้างไดเรกทอรีโดยไม่ต้องมีการแจ้งเตือนใด ๆ เพิ่มเติม
Jonathan Leech-Pepin

1
@ JonathanLeech-Pepin: ใช่แน่นอน (นั่นคือสิ่งที่ข้อความบอกว่า.) แต่ถ้าคุณได้เปิดแล้วบัฟเฟอร์ไฟล์ใหม่เพียงแค่พยายามที่จะบันทึกไว้และยืนยันการสร้าง dir yกับ
ดึง

7

สำหรับidoผู้ใช้

  • ทำC-x C-f(ซึ่งควรเรียกido-find-file) และป้อนเส้นทางที่ไม่มีอยู่จริง
  • กดM-m(ช่วยในการจำสำหรับmake dir ใหม่?) REThit
  • ดำเนินการต่อด้วยการพิมพ์ชื่อไฟล์ใหม่ที่คุณต้องการสร้างใน dir ใหม่นั้น REThit

1

เมื่ออยู่ในสถานการณ์นี้ emacs ควรจะบอกสิ่งที่คุณต้องการ:

use M-x make-directory RET RET to create the directory and its parents

มันยุ่งยากไหม?

ฉันจะบอกว่าใช่มันเป็น


0

หากคุณต้องการ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 ได้รับการออกแบบให้สามารถขยายและปรับแต่งได้

อ้างอิง:

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