Làm cách nào để đặt một vị trí khác cho tệp .emacs chấm trên Windows 7?


16

Tôi đang sử dụng máy tính Windows 7 và không có quyền truy cập quản trị viên. Vì vậy, tôi không thể đặt một tập tin dấu chấm emacs trong thư mục gốc. Có cách nào để tôi chỉ định một vị trí khác cho tệp dot emacs không?


Nếu bạn có thể kiểm soát vị trí cài đặt Emacs của riêng mình (ví dụ: đặt nó ở bất cứ đâu bạn muốn hoặc ít nhất có quyền truy cập ghi vào cài đặt), thì bạn có thể kiểm soát hoàn toàn bằng cách sử dụng một cái gì đó như site-start.elđể tải của riêng init.elbạn và bạn không còn cần a .emacs. Trong ví dụ này, bạn không cần phải sử dụng thư mục chính (trừ khi có người khác trên máy tính đặt nội dung vào đó sẽ ảnh hưởng đến những gì bạn làm). Nói cách khác, nó có thể để trống và bạn không bao giờ cần phải chạm vào nó.
luật

Câu trả lời:


4

Emacs có một vài nơi nó tìm kiếm các tập tin init, như được ghi lại trong hướng dẫn . Nếu bạn muốn tùy chỉnh Emacs, bạn phải bắt đầu với một trong những tệp đó.

Một cách tiếp cận phổ biến là sử dụng tệp init.eltrong của bạn user-emacs-directory, thay vì có .emacstrong thư mục HOME của bạn.

Mặc user-emacs-directoryđịnh ~/.emacs.d, vì vậy nó vẫn liên quan đến TRANG CHỦ của bạn, nhưng lợi ích của phương pháp này là bạn có thể giữ mọi thứ liên quan đến cấu hình Emacs của mình ở một nơi. Thư mục đó có thể được kiểm soát phiên bản, sao lưu, chia sẻ trên nhiều máy, v.v. Bạn có thể sử dụng liên kết tượng trưng ( mklinktrên Windows) để giữ các tệp ở một số vị trí khác.

Ví dụ, khá phổ biến khi thấy mọi người duy trì cấu hình Emacs của họ trên Github. Bạn có thể tìm thấy rất nhiều ví dụ về điều này bằng cách tìm kiếm Github cho các dự án với các tập tin elisp init.el .


Tôi thích giải pháp này và muốn sử dụng nó, tuy nhiên nó vẫn không cho tôi biết cách thay đổiuser-emacs-directory
Startec

Đề nghị của tôi là sử dụng symlink, thực sự. Như được hiển thị bởi các câu trả lời khác, bạn cần đặt một cái gì đó vào một trong những vị trí tiêu chuẩn Emacs đọc trong init, ngay cả khi tất cả những gì nó làm là tải cấu hình của bạn từ một nơi khác.
glucas

Liên kết thủ công bị hỏng.
corvus_192

17

Trên mỗi cài đặt Windows mà tôi sử dụng Emacs, tôi có mã sau đây trong một .emacstệp tại vị trí được liệt kê:

;; 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)

Bằng cách này tôi có thể đặt tôi .emacs.emacs.d/bất cứ nơi nào tôi muốn.


Cảm ơn bạn, gần như chỉ là những gì tôi cần. Tôi đã rời khỏi thư mục mặc định và sentenv HOME nhưng nếu không thì đó là thứ tôi cần để setq!
Grant Bowman

Tôi đã thử câu trả lời của Ryan. Nhưng, bây giờ tôi không thể mở tệp này trong emacs từ thư mục AppData \ Roaming. Xin thứ lỗi cho tôi, vì tôi không thể thêm nhận xét vì, tôi chưa có 50 điểm.
Saletumar R

@SaletumarR Bạn nên đặt câu hỏi mới, liên kết với câu hỏi này, thay vì đăng "Trả lời"
Andrew Swann

@SaletumarR Nếu bạn có câu hỏi mới, vui lòng hỏi nó bằng cách nhấp vào nút Hỏi Câu hỏi . Bao gồm một liên kết đến câu hỏi này nếu nó giúp cung cấp bối cảnh. - Từ đánh giá
Stefan

5

Tệp .emacs của bạn đi trong HOMEthư mục của bạn . Từ hướng dẫn sử dụng Emacs:

Tương đương Windows của HOME là thư mục dữ liệu ứng dụng dành riêng cho người dùng. Vị trí thực tế phụ thuộc vào phiên bản Windows ...

Bạn có thể ghi đè giá trị mặc định này của HOME bằng cách đặt rõ ràng biến môi trường HOME để trỏ đến bất kỳ thư mục nào trên hệ thống của bạn. HOME có thể được đặt từ dấu nhắc trình vỏ lệnh hoặc từ hộp thoại 'Thuộc tính' của 'Máy tính của tôi'. HOME cũng có thể được đặt trong sổ đăng ký hệ thống, xem Sổ đăng ký MS-Windows.


1
Có, tôi biết cách đặt thư mục chính tuy nhiên vì lý do kiểm soát phiên bản, tôi muốn có thể đặt emacs để đọc từ một thư mục khác (để tôi có thể có một thư mục dành riêng cho emacs)
Startec

3
Lưu ý rằng việc hack này khiến Emacs coi một cái gì đó khác là thư mục chính.
wasamasa

@wasamasa - Tôi sẽ không gọi nó là "hack". Trong bản dựng Emacs 25 của tôi, nếu bạn không đặt "HOME" với biến môi trường, nó mặc định là thư mục cài đặt Emacs, điều này khá sai. "HOME" nên được đặt thành những gì người dùng xem xét thư mục chính của họ và đặt biến môi trường là cách tiêu chuẩn dự định để làm điều đó. Trên các hệ thống Unix, điều này thường được thực hiện cho người dùng trong quá trình đăng nhập, nhưng trên Windows, bạn phải thực hiện thủ công.
TED

Mục đích của việc này là thay đổi những gì bạn thường coi HOMEthư mục của mình thành một thứ gì đó cực kỳ khác biệt. Do đó tại sao tôi gọi đó là thay đổi một hack. Đặt nó vào giá trị thích hợp của nó rõ ràng là tốt.
wasamasa

2

Bạn nói:

Tôi biết cách đặt thư mục chính tuy nhiên vì lý do kiểm soát phiên bản, tôi muốn có thể đặt emacs để đọc từ một thư mục khác (để tôi có thể có một thư mục dành riêng cho emacs) .

Tập tin init của bạn nằm trong thư mục chính của bạn, nơi bạn có thể đặt ở bất cứ đâu. Rõ ràng bạn muốn có một thư mục khác cho những thứ mà Emacs tải. Đó không phải là vấn đề. Đặt tệp init của bạn vào thư mục chính của bạn load-pathvà yêu cầu tệp đó thêm một thư mục khác vào giá trị của biến và sau đó yêu cầu bất kỳ thư viện Emacs nào khác mà bạn muốn sử dụng. Đặt các thư viện trong thư mục khác.

IOW, tệp init của bạn không cần chứa bất cứ thứ gì ngoài việc thiết lập thư mục nơi bạn giữ các thư viện Emacs mà bạn muốn tải.



0

Hãy nghĩ rằng bạn có thể đặt (setq user-init-file "C:/path/to/.emacs")và các dòng khác được đề xuất bởi @ryan vào site-start.el

Trang web của bạn cũng có thể có một tệp khởi động trang web; cái này được đặt tên là site-start.el, nếu nó tồn tại. Giống như default.el, Emacs tìm thấy tệp này thông qua đường dẫn tìm kiếm tiêu chuẩn cho các thư viện Lisp. Emacs tải thư viện này trước khi nó tải tập tin init của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.