ฉันจะตั้งค่าตำแหน่งอื่นสำหรับไฟล์ dot emacs .emacs บน Windows 7 ได้อย่างไร


16

ฉันใช้คอมพิวเตอร์ที่ใช้ Windows 7 และไม่สามารถเข้าถึงผู้ดูแลระบบได้ ดังนั้นฉันไม่สามารถวางไฟล์ dot emacs ในไดเรกทอรีรากได้ มีวิธีให้ฉันระบุตำแหน่งอื่นสำหรับไฟล์ dot emacs หรือไม่


หากคุณสามารถควบคุมตำแหน่งของคุณเองของการติดตั้ง Emacs (เช่นวางไว้ที่ใดก็ตามที่คุณต้องการหรืออย่างน้อยมีสิทธิ์ในการเขียนการติดตั้ง) จากนั้นคุณสามารถใช้การควบคุมที่สมบูรณ์โดยใช้สิ่งที่ต้องการsite-start.elในการโหลดของคุณเองinit.elและคุณไม่จำเป็นอีกต่อไป ก.emacs. ในตัวอย่างนี้คุณไม่จำเป็นต้องไปทำเรื่องกับโฮมไดเร็กตอรี่ (เว้นแต่ว่ามีคนอื่นในคอมพิวเตอร์กำลังวางสิ่งต่างๆไว้ในนั้นซึ่งจะส่งผลต่อสิ่งที่คุณทำ) กล่าวได้ว่ามันว่างเปล่าและคุณไม่จำเป็นต้องแตะมันเลย
ฏหมาย

คำตอบ:


4

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
Startec

ข้อเสนอแนะของฉันคือการใช้ symlink จริงๆ ดังที่แสดงโดยคำตอบอื่น ๆ ที่คุณต้องใส่บางสิ่งในหนึ่งในตำแหน่งมาตรฐานที่ Emacs อ่านในระหว่างการเริ่มต้นแม้ว่าทั้งหมดจะทำการโหลดการกำหนดค่าของคุณจากที่อื่น
ลูกัส

ลิงก์ด้วยตนเองเสีย
corvus_192

17

ในทุกการติดตั้ง 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/ทุกที่ที่ฉันต้องการ


ขอบคุณเกือบสิ่งที่ฉันต้องการ ฉันออกจากไดเรกทอรีเริ่มต้นและ sentenv หน้าแรก แต่อย่างอื่นมันเป็นสิ่งที่ฉันต้องการ setq!
Grant Bowman

ฉันลองคำตอบของไรอัน แต่ตอนนี้ฉันไม่สามารถเปิดไฟล์นี้ภายใน emacs จากโฟลเดอร์ AppData \ Roaming กรุณาขอโทษด้วยเนื่องจากฉันไม่สามารถเพิ่มความคิดเห็นได้เพราะฉันยังไม่มีคะแนน 50 คะแนน
Sreekumar R

@SreekumarR คุณควรถามคำถามใหม่เชื่อมโยงไปยังคนนี้แทนการโพสต์ "คำตอบ"
แอนดรู Swann

@SreekumarR หากคุณมีคำถามใหม่โปรดขอได้โดยคลิกที่ถามคำถามปุ่ม รวมลิงค์ไปยังคำถามนี้หากช่วยระบุบริบท - จากการรีวิว
Stefan

5

ไฟล์. emacs ของคุณจะอยู่ในHOMEไดเรกทอรีของคุณ จากคู่มือ Emacs:

Windows เทียบเท่า HOME เป็นไดเรกทอรีข้อมูลแอปพลิเคชันเฉพาะผู้ใช้ ตำแหน่งจริงขึ้นอยู่กับรุ่นของ Windows ...

คุณสามารถแทนที่ค่าเริ่มต้นของ HOME โดยการตั้งค่าตัวแปรสภาพแวดล้อม HOME ให้ชี้ไปที่ไดเรกทอรีใด ๆ ในระบบของคุณ HOME สามารถตั้งค่าได้จากพรอมต์คำสั่งเชลล์หรือจากกล่องโต้ตอบ 'คุณสมบัติ' ของ 'My Computer' HOME สามารถตั้งค่าในรีจิสตรีของระบบได้ด้วยโปรดดูที่ MS-Windows Registry


1
ใช่ฉันรู้วิธีตั้งค่าโฮมไดเร็กตอรี่ แต่ด้วยเหตุผลการควบคุมเวอร์ชันฉันต้องการให้ emacs อ่านจากไดเรกทอรีอื่น (เพื่อให้ฉันสามารถมีไดเรคทอรีเฉพาะสำหรับ emacs)
Startec

3
โปรดทราบว่าการแฮ็คนี้ทำให้ Emacs พิจารณาอย่างอื่นเป็นไดเรกทอรีหลัก
wasamasa

@wasamasa - ฉันจะไม่เรียกมันว่า "แฮ็ค" ใน build ของ Emacs 25 ของฉันหากคุณไม่ได้ตั้งค่า "HOME" ด้วยตัวแปรสภาพแวดล้อมมันจะมีค่าเริ่มต้นเป็นไดเรกทอรีติดตั้ง Emacs ซึ่งค่อนข้างผิดปกติ "HOME" ควรตั้งค่าเป็นสิ่งที่ผู้ใช้พิจารณาถึงโฮมไดเร็กตอรี่ของพวกเขาและการตั้งค่าตัวแปรสภาพแวดล้อมเป็นวิธีมาตรฐานที่ตั้งใจทำ บนระบบ Unix สิ่งนี้มักจะทำเพื่อผู้ใช้ในระหว่างกระบวนการล็อกอิน แต่บน Windows คุณต้องทำด้วยตนเอง
TED

จุดนี้คือการเปลี่ยนสิ่งที่ปกติคุณจะพิจารณาHOMEไดเรกทอรีของคุณเป็นสิ่งที่แตกต่างกัน ดังนั้นทำไมฉันจึงเรียกมันว่าแฮ็ค การตั้งค่าให้เป็นค่าที่เหมาะสมนั้นชัดมาก
wasamasa

2

คุณพูด:

ฉันรู้วิธีการตั้งค่าไดเรกทอรีบ้าน แต่สำหรับเหตุผลที่การควบคุมเวอร์ชันฉันต้องการที่จะสามารถที่จะตั้ง emacs อ่านจากไดเรกทอรีที่แตกต่างกัน (เพื่อที่ฉันสามารถมีเฉพาะไดเรกทอรี emacs)

ไฟล์ init ของคุณอยู่ในโฮมไดเร็กตอรี่ซึ่งคุณสามารถใส่ได้ทุกที่ เห็นได้ชัดว่าคุณต้องการมีไดเรกทอรีที่แตกต่างกันสำหรับสิ่งที่ Emacs โหลด นั่นไม่ใช่ปัญหา. วางไฟล์ init ของคุณในโฮมไดเร็กตอรี่ของคุณและให้ไฟล์นั้นเพิ่มไดเร็กตอรี่อื่นเข้าไปในค่าของตัวแปรload-pathแล้วต้องการไลบรารี Emacs อื่น ๆ ที่คุณต้องการใช้ ใส่ไลบรารีเหล่านั้นในไดเรกทอรีอื่นนั้น

IOW ไฟล์ init ของคุณไม่จำเป็นต้องมีสิ่งใดนอกจากการตั้งค่าไดเรกทอรีที่คุณเก็บไลบรารี Emacs ที่คุณต้องการโหลด


1

เพื่อความสมบูรณ์ฉันมีลิงก์ไปยัง:

https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html

ซึ่งบอกว่าคุณสามารถตั้งHOMEค่าในเส้นทางรีจิสทรี:

HKCU\SOFTWARE\GNU\Emacs\HOME

HOMEแต่ค่านี้ถูกแทนที่โดยตัวแปรสภาพแวดล้อม


0

คิดว่าคุณสามารถใส่(setq user-init-file "C:/path/to/.emacs")และบรรทัดอื่น ๆ ที่เสนอโดย @ryan ในsite-start.el

ไซต์ของคุณอาจมีไฟล์เริ่มต้นไซต์ด้วย นี่คือชื่อ site-start.el หากมีอยู่ เช่นเดียวกับ default.el, Emacs ค้นหาไฟล์นี้ผ่านทางพา ธ การค้นหามาตรฐานสำหรับไลบรารี Lisp Emacs โหลดไลบรารีนี้ก่อนที่จะโหลดไฟล์ init ของคุณ

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