Câu trả lời:
Sao chép và dán từ Câu hỏi thường gặp về Emacs, http://www.gnu.org/software/emacs/windows/ :
Trên Windows, .emacstệp có thể được gọi _emacsđể tương thích ngược với các hệ thống tệp DOS và FAT trong đó tên tệp không thể bắt đầu bằng dấu chấm. Một số người dùng thích tiếp tục sử dụng tên như vậy vì Windows Explorer không thể tạo tệp có tên bắt đầu bằng dấu chấm, mặc dù hệ thống tệp và hầu hết các chương trình khác có thể xử lý nó. Trong Emacs 22 trở lên, tệp init cũng có thể được gọi .emacs.d/init.el. Nhiều tệp khác được tạo bởi gói Lisp hiện cũng được lưu trữ trong .emacs.dthư mục, vì vậy điều này giữ tất cả các tệp liên quan đến Emacs của bạn ở một nơi.
Tất cả các tệp được đề cập ở trên sẽ nằm trong thư mục HOME của bạn. Thư mục HOME được xác định bằng cách làm theo các bước dưới đây:
C:\.emacstồn tại, sau đó sử dụng C:/. Điều này là để tương thích ngược, vì các phiên bản trước được mặc định là C:/nếu HOME không được đặt.Trong Emacs, ~ở phần đầu của tên tệp được mở rộng đến thư mục HOME của bạn, vì vậy bạn luôn có thể tìm thấy tệp .emacs của mình C-x C-f ~/.emacs.
Có thêm thông tin tại TRANG CHỦ và Thư mục Khởi động trên MS-Windows .
Nó phải được lưu trữ trong tệp user-init-biến. Sử dụng C-H v user-init-file RETđể kiểm tra. Bạn cũng có thể mở nó trực tiếp bằng cách sử dụngM-x eval-expression RET (find-file user-init-file) RET
trailing garbage following expression?
Trên hộp Vista của tôi, nó ở trong C:\Users\<USER>\AppData\Roaming\
Lưu ý rằng có thể KHÔNG đủ nếu chỉ nhập Ctrl-x Ctrl-f ~/.emacsvà tạo tệp.
Có thể ứng dụng Emacs của bạn sử dụng một nơi khác để lưu trữ tệp init của bạn và nếu vậy, việc tạo tệp ~ / .emacs chỉ đơn giản là tạo ra một tệp vô dụng mà ứng dụng Emacs của bạn bỏ qua.
Ngoài ra, bạn có thể muốn làm nhiều việc hơn là chỉ truy cập vào tệp .emacs init, nhưng bạn có thể muốn biết vị trí của nó, tức là tên đường dẫn của nó.
Để đạt được điều này, có hai phương pháp:
Cách dễ dàng: gõ Ctrl+ H Vuser-init-fileReturn
Cách phức tạp hơn một chút: Bạn có thể tìm ra nơi hệ thống của bạn đang lưu trữ tệp .emacs của riêng nó bằng cách:
c:/Users/user1/AppData/Roaming/.emacs.el. Trang web này emacswiki.org/emacs/DotEmacsDotD đã giúp tôi nhận ra rằng tôi cần đặt tên cho tệp ~/.emacs.d/init.el, điều đó có nghĩa là tệp trong hệ thống tệp đang ở c:\Users\user1\AppData\Roaming\.emacs.d\init.el(hoàn toàn không phải như tôi mong đợi). Tôi thích đặt biến môi trường HOME và đặt tệp trong %USERPROFILE%thư mục của tôi, thư mục HOME hợp lý trên windows (ít nhất là theo như tôi có liên quan).
Trong Windows 7, hãy đưa init.eltệp của bạn vào C:\Users\user-name\AppData\Roaming\.emacs.d\, trong đó tên người dùng là người dùng / thư mục đăng nhập của bạn.
Hãy cẩn thận để init.eltệp của bạn không bị đặt tên init.el.txt. Đây là điều mà Windows thực hiện nếu bạn tạo tệp của mình bằng một số trình chỉnh sửa như Notepad.
Bạn phải tạo một tệp khởi tạo emacs. Một không được tạo tự động. Tôi đã gặp vấn đề tương tự và câu trả lời này theo dõi những gì tôi đã làm.
Vấn đề của tôi ~/.emacs.ellà tệp của tôi không tải. Lạ vì điều này đã luôn luôn hiệu quả với tôi.
Câu hỏi / câu trả lời này đã giúp tôi nhưng tôi phải đặt tệp init của mình vào %USERPROFILE%\AppData\Roaming\.emacs.d\init.elvì đây rõ ràng là hành vi mặc định trên Windows.
Để khắc phục sự cố này, tôi đã chạy phần sau trong bộ đệm emacs * xước * .
user-emacs-directory
"~/.emacs.d/"
Khi tôi thấy user-emacs-directorylà ~/.emacs.d, tôi chỉ cần di chuyển tệp .emacs.el của mình sang %USERPROFILE%\.emacs.d\init.el. Nhưng điều này vẫn không hoạt động. Tôi tiếp tục với expand-file-namenhư hình dưới đây:
(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"
Phải yêu cách Windows hoạt động. (not) Vì vậy, tôi đã chuyển emacs.eltệp của mình đến %USERPROFILE%\AppData\Roaming\.emacs.d\init.elvà điều này đã hoạt động. Tệp hiện đang được đọc. Nhưng tôi gặp các lỗi khác do tệp khởi tạo của tôi đã tải các tệp (emacs cá nhân) khác (trong ~/myenv/emacs/*.el.
Warning (initialization): An error occurred while loading ‘c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:
Hum ... Có vẻ như tất cả các tệp của tôi ~/myenv/emacs/*.elsẽ cần phải được di chuyển để việc này hoạt động nhưng tôi không muốn làm điều đó. Sau đó, tôi nhận ra rằng vì biến môi trường HOME không được đặt nên emacs đang thực hiện hành vi mặc định của nó .
GIẢI PHÁP
Khi tôi đặt HOMEbiến môi trường windows của mình thành %USERPROFILE%mọi thứ bắt đầu hoạt động như trong 25 năm qua. :-)
Để đặt biến môi trường HOME, tôi đã nhập WindowsKey + "chỉnh sửa biến môi trường cho tài khoản của bạn" để mở hộp thoại Biến môi trường và nhập HOME=%USERPROFILE%.
Bây giờ tệp khởi tạo emacs của tôi .emacs.el đã trở lại đúng vị trí của nó $HOME/.emacs.elvà không ở%USERPROFILE%\AppData\Roaming\.emacs.d\init.el
Công bằng mà nói, nếu Windows chỉ có một nơi để đặt các tệp cho các gói do người dùng cài đặt thì giải pháp tạo HOME = %USERPROFILE\AppData\Roamingcó thể được chấp nhận, nhưng vì một số ứng dụng sử dụng %USERPROFILE%, một số sử dụng %USERPROFILE\AppData\Roamingvà một số khác sử dụng %USERPROFILE\AppData\Localnó chỉ khiến bạn khó biết tìm cấu hình của mình ở đâu. các tập tin.
Tôi muốn có mọi thứ trong thư mục% USERPROFILE% hoặc $ HOME của mình.
Một câu hỏi tương tự khác ở đây:
Như kanja đã trả lời, đường dẫn đến tệp này được lưu trữ trong user-init-filebiến (hoặc nếu không có tệp init tồn tại, biến chứa giá trị mặc định cho nơi tạo nó).
Vì vậy, bất kể bạn đang sử dụng tên tệp init nào và nó nằm trong thư mục nào, bạn sẽ có thể truy cập tệp init của mình bằng:
M-: (find-file user-init-file) RET
Hoặc hiển thị đường dẫn đầy đủ của nó trong vùng tiếng vọng với:
M-: (expand-file-name user-init-file) RET
Trên Emacs 23 và Windows 7, nó chỉ hoạt động nếu bạn đặt:
HKCU\SOFTWARE\GNU\Emacs\HOME
Tôi nhận thấy rằng Emacs 22 đôi khi sẽ mở "C: \ Documents and Settings \ username \ Application Data \ .emacs" hoặc chỉ "C: \ Documents and Settings \ username \ .emacs" trên máy XP của tôi. Tôi chưa tìm ra lời giải thích tại sao thỉnh thoảng nó lại đổi ý.
~ sẽ luôn trỏ đến bất kỳ trường hợp hiện tại nào của emacs cho là HOME, nhưng mẹo của kanja (Ch v user-init-file) sẽ luôn cho bạn biết ~ / .emacs thực sự ánh xạ tới cái gì.
HOMEbiến môi trường khác nhau, tùy thuộc vào cách tôi bắt đầu runemacs.exe. Nếu tôi khởi động nó từ bên trong Explorer, HOMEđược đặt thành C:\Documents and Settings\username, nhưng nếu tôi khởi động nó từ Start Menu, thì HOMElà C:\Documents and Settings\username\Application Data. Thật kỳ lạ.
Trên Windows XP, đó là:
C:\Documents and Settings\yourusernamehere\Application Data\
Có một danh sách các thư mục dựa trên phiên bản Windows của bạn và thông tin bổ sung: http://www.gnu.org/software/emacs/manual/html_node/emacs/Windows-HOME.html
Trên Windows 8.1, nếu Emacs được khởi động từ Windows Explorer , một lối tắt hoặc từ bảng điều khiển cmd, nó sẽ sử dụng tệp init C: \ Users \ <USER> \ AppData \ Roaming.emacs . Khi tôi khởi động Emacs từ PowerShell, Emacs sẽ tìm tệp init của nó trong thư mục C: \ Users \ <USER> . Cách khắc phục sự cố này là đặt biến môi trường người dùng HOME (Control Panel \ System and Security \ System-> Cài đặt hệ thống nâng cao-> Nâng cao-> Biến môi trường) thành C: \ Users \ <USER> . Sau thay đổi này, bất kể tôi khởi động Emacs bằng cách nào, nó vẫn sử dụng cùng một tệp init (xem câu trả lời được chấp nhận của câu hỏi này )
Dành cho WIndows7 & Emacs26.3 :
nếu HOMEmôi trường được đặt, thì .emacstệp sẽ nằm trong thư mục đó.
nếu không, nó phải ở trong c:\.
Trong cả hai trường hợp, nếu .emacskhông có, _emacsnên được sử dụng.
Điều này là do chúng ta không thể tạo .emacstệp theo quy tắc đặt tên tệp của windows (nhưng chúng ta có thể tải xuống hoặc sao chép nó từ một nơi khác).