ฉันใช้คอมพิวเตอร์ที่ใช้ Windows 7 และไม่สามารถเข้าถึงผู้ดูแลระบบได้ ดังนั้นฉันไม่สามารถวางไฟล์ dot emacs ในไดเรกทอรีรากได้ มีวิธีให้ฉันระบุตำแหน่งอื่นสำหรับไฟล์ dot emacs หรือไม่
ฉันใช้คอมพิวเตอร์ที่ใช้ Windows 7 และไม่สามารถเข้าถึงผู้ดูแลระบบได้ ดังนั้นฉันไม่สามารถวางไฟล์ dot emacs ในไดเรกทอรีรากได้ มีวิธีให้ฉันระบุตำแหน่งอื่นสำหรับไฟล์ dot emacs หรือไม่
คำตอบ:
Emacs มีหลายสถานที่จะมองหาไฟล์ init เป็นบันทึกไว้ในคู่มือการใช้งาน หากคุณต้องการปรับแต่ง Emacs คุณต้องเริ่มด้วยหนึ่งในไฟล์เหล่านั้น
วิธีการทั่วไปคือการใช้ไฟล์init.el
ในของคุณuser-emacs-directory
แทนที่จะมี.emacs
ในไดเรกทอรี HOME ของคุณ
user-emacs-directory
ค่าเริ่มต้น~/.emacs.d
จึงยังคงเทียบกับบ้านของคุณ แต่ประโยชน์ของวิธีนี้ก็คือคุณสามารถเก็บทุกอย่างที่เกี่ยวข้องกับการกำหนดค่า Emacs คุณในที่เดียว ไดเรกทอรีนั้นอาจอยู่ภายใต้การควบคุมเวอร์ชันสำรองข้อมูลแชร์ผ่านหลายเครื่อง ฯลฯ คุณสามารถใช้ symlink ( mklink
บน Windows) เพื่อเก็บไฟล์ไว้ในตำแหน่งอื่น
ตัวอย่างเช่นเป็นเรื่องธรรมดาที่จะเห็นคนรักษาคอนฟิกูเรชัน Emacs ของพวกเขาใน Github คุณสามารถค้นหาจำนวนมากตัวอย่างนี้โดยการค้นหา Github สำหรับโครงการ Elisp กับไฟล์
user-emacs-directory
ในทุกการติดตั้ง Windows ที่ฉันใช้ Emacs ฉันมีรหัสต่อไปนี้ใน.emacs
ไฟล์ที่ตำแหน่งที่แสดง:
;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)
ด้วยวิธีนี้ฉันสามารถใส่ของฉัน.emacs
และ.emacs.d/
ทุกที่ที่ฉันต้องการ
ไฟล์. emacs ของคุณจะอยู่ในHOME
ไดเรกทอรีของคุณ จากคู่มือ Emacs:
Windows เทียบเท่า HOME เป็นไดเรกทอรีข้อมูลแอปพลิเคชันเฉพาะผู้ใช้ ตำแหน่งจริงขึ้นอยู่กับรุ่นของ Windows ...
คุณสามารถแทนที่ค่าเริ่มต้นของ HOME โดยการตั้งค่าตัวแปรสภาพแวดล้อม HOME ให้ชี้ไปที่ไดเรกทอรีใด ๆ ในระบบของคุณ HOME สามารถตั้งค่าได้จากพรอมต์คำสั่งเชลล์หรือจากกล่องโต้ตอบ 'คุณสมบัติ' ของ 'My Computer' HOME สามารถตั้งค่าในรีจิสตรีของระบบได้ด้วยโปรดดูที่ MS-Windows Registry
HOME
ไดเรกทอรีของคุณเป็นสิ่งที่แตกต่างกัน ดังนั้นทำไมฉันจึงเรียกมันว่าแฮ็ค การตั้งค่าให้เป็นค่าที่เหมาะสมนั้นชัดมาก
คุณพูด:
ฉันรู้วิธีการตั้งค่าไดเรกทอรีบ้าน แต่สำหรับเหตุผลที่การควบคุมเวอร์ชันฉันต้องการที่จะสามารถที่จะตั้ง emacs อ่านจากไดเรกทอรีที่แตกต่างกัน (เพื่อที่ฉันสามารถมีเฉพาะไดเรกทอรี emacs)
ไฟล์ init ของคุณอยู่ในโฮมไดเร็กตอรี่ซึ่งคุณสามารถใส่ได้ทุกที่ เห็นได้ชัดว่าคุณต้องการมีไดเรกทอรีที่แตกต่างกันสำหรับสิ่งที่ Emacs โหลด นั่นไม่ใช่ปัญหา. วางไฟล์ init ของคุณในโฮมไดเร็กตอรี่ของคุณและให้ไฟล์นั้นเพิ่มไดเร็กตอรี่อื่นเข้าไปในค่าของตัวแปรload-path
แล้วต้องการไลบรารี Emacs อื่น ๆ ที่คุณต้องการใช้ ใส่ไลบรารีเหล่านั้นในไดเรกทอรีอื่นนั้น
IOW ไฟล์ init ของคุณไม่จำเป็นต้องมีสิ่งใดนอกจากการตั้งค่าไดเรกทอรีที่คุณเก็บไลบรารี Emacs ที่คุณต้องการโหลด
เพื่อความสมบูรณ์ฉันมีลิงก์ไปยัง:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
ซึ่งบอกว่าคุณสามารถตั้งHOME
ค่าในเส้นทางรีจิสทรี:
HKCU\SOFTWARE\GNU\Emacs\HOME
HOME
แต่ค่านี้ถูกแทนที่โดยตัวแปรสภาพแวดล้อม
คิดว่าคุณสามารถใส่(setq user-init-file "C:/path/to/.emacs")
และบรรทัดอื่น ๆ ที่เสนอโดย @ryan ในsite-start.el
ไซต์ของคุณอาจมีไฟล์เริ่มต้นไซต์ด้วย นี่คือชื่อ site-start.el หากมีอยู่ เช่นเดียวกับ default.el, Emacs ค้นหาไฟล์นี้ผ่านทางพา ธ การค้นหามาตรฐานสำหรับไลบรารี Lisp Emacs โหลดไลบรารีนี้ก่อนที่จะโหลดไฟล์ init ของคุณ
site-start.el
ในการโหลดของคุณเองinit.el
และคุณไม่จำเป็นอีกต่อไป ก.emacs
. ในตัวอย่างนี้คุณไม่จำเป็นต้องไปทำเรื่องกับโฮมไดเร็กตอรี่ (เว้นแต่ว่ามีคนอื่นในคอมพิวเตอร์กำลังวางสิ่งต่างๆไว้ในนั้นซึ่งจะส่งผลต่อสิ่งที่คุณทำ) กล่าวได้ว่ามันว่างเปล่าและคุณไม่จำเป็นต้องแตะมันเลย