Tôi có thể tìm tệp .emacs của mình cho Emacs chạy trên Windows ở đâu?


115

Tôi đã thử tìm kiếm tệp .emacs để cài đặt Windows cho Emacs, nhưng tôi không thể tìm thấy. Nó có cùng tên tệp trong Windows với Unix không?

Tôi có phải tự tạo nó không? Nếu vậy, nó đi theo thư mục cụ thể nào?

Câu trả lời:


108

Sao chép và dán từ Câu hỏi thường gặp về Emacs, http://www.gnu.org/software/emacs/windows/ :

Tôi đặt tệp init của mình ở đâu?

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:

  1. Nếu biến môi trường HOME được đặt, hãy sử dụng thư mục mà nó chỉ ra.
  2. Nếu mục đăng ký HKCU \ SOFTWARE \ GNU \ Emacs \ HOME được đặt, hãy sử dụng thư mục mà nó chỉ ra.
  3. Nếu mục đăng ký HKLM \ SOFTWARE \ GNU \ Emacs \ HOME được đặt, hãy sử dụng thư mục mà nó chỉ ra. Không được khuyến nghị, vì nó dẫn đến việc người dùng chia sẻ cùng một thư mục HOME.
  4. Nếu 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.
  5. Sử dụng thư mục AppData của người dùng, thường là thư mục được gọi là Dữ liệu ứng dụng trong thư mục hồ sơ của người dùng, vị trí của thư mục này thay đổi tùy theo phiên bản Windows và liệu máy tính có phải là một phần của miền hay không.

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 .


1
Hoặc bạn có thể cần tìm bằng Cx Cf ~ / _emacs (thay vì dấu chấm). Sử dụng dấu gạch dưới cho init của bạn là cách làm phổ biến (và được đề xuất) cho cả Vim và Emacs.
mê cung

Emacs phàn nàn rằng "_emacs" không được dùng nữa :(
Brian Z

Cảm ơn. Lời giải thích này thực sự đã giúp tôi thiết lập emacs đúng theo một hướng dẫn về áo choàng, nơi họ thậm chí còn không đề cập đến điều này. Đã tạo biến HOME trên windows và bây giờ nó hoạt động.
Siniyas

Đối với tôi khi tham khảo điểm 5 của bạn ở trên, thư mục emacs đang tìm kiếm cho tôi là C: \ Users \ userid \ AppData \ Roaming trên Windows 7 nhưng tất nhiên máy tính của tôi nằm trên một miền.
user8128167

Trên Windows 10, tôi đặt biến HOME thành% USERPROFILE% để tránh hậu tố AppData.
Bae

80

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


8
Điều này rất hữu ích, tôi ngạc nhiên là nó không được đề cập trong phần hướng dẫn sử dụng trên các tệp init.
Brian Z,

Tôi tự hỏi tại sao khi tôi thử điều này, tôi nhận được trailing garbage following expression?
Marko Grdinic

Bạn đã sử dụng dấu ngoặc đơn?
Jose Romero

29

Mở tệp như thế này trong Emacs cho Windows:

C-x C-f ~/.emacs

Thông tin thêm trong Wiki Emacs


11
Và sau đó nhấp vào Tệp> Mở tệp ... hoặc Lưu dưới dạng ... để xem ~ / ở đâu trong hộp thoại Mở Windows quen thuộc.
Yoo

21

Trên hộp Vista của tôi, nó ở trong C:\Users\<USER>\AppData\Roaming\


1
Tương tự cho Windows 8.1 (Emacs 24) với một ngoại lệ. Khi Emacs được mở từ Windows Explorer, một liên kết hoặc bảng điều khiển cmd nó sử dụng tệp cấu hình C: \ Users \ <USER> \ AppData \ Roaming \ .emacs nhưng nếu bạn mở Emacs từ bảng điều khiển PowerShell, Emacs sẽ tìm tệp .emacs trong C : \ Users \ <USER> thư mục.
kri

Điều này đã làm việc cho tôi. Tôi đã tạo tệp .emacs trong thư mục Chuyển vùng trong AppData và hoạt động như một sự quyến rũ! Windows 10
Retro Gamer

Đã làm việc trong Windows 10
Alex Kaszynski

6

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:

  1. Nhấp vào tùy chọn và cuộn xuống "Đặt Phông chữ Mặc định ..."
  2. Thay đổi cài đặt phông chữ và bấm OK
  3. Trên menu tùy chọn, đi xuống "Lưu tùy chọn"
  4. Khi các tùy chọn được lưu, hệ thống sẽ lưu tệp .emacs của nó và bạn có thể đọc đường dẫn tệp trong bộ đệm nhỏ ở cuối màn hình Emacs

Vui lòng tham khảo tài liệu về định dạng câu trả lời của bạn. Nó khá dễ dàng và sẽ giúp bạn kiếm được nhiều danh tiếng hơn.
Bhavik Shah

Khi tôi lưu một tệp có tên ~ / .emacs.el tệp, nó đã được tạo trong 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).
PatS

4

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.


4

Trên các phiên bản Emacs trên Windows trên 22, nó dường như đã chuyển sang

~/.emacs.d/init.el

, ~là giá trị của biến môi trường HOME (xem Bảng điều khiển → Hệ thốngNâng caoBiến môi trường ).

Bản thân tệp có thể không tồn tại. Trong trường hợp đó, chỉ cần tạo nó.


3

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-directory~/.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:


"Phải thích cách hoạt động của Windows. (Not)" - Vấn đề này không liên quan gì đến Windows ngoài việc các nhà phát triển Emacs đã làm với những người chạy Emacs trên Windows.
Chris Charabaruk

2

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


2

Trên Emacs 23 và Windows 7, nó chỉ hoạt động nếu bạn đặt:

HKCU\SOFTWARE\GNU\Emacs\HOME

Cuối cùng tôi đã tìm thấy điều này! Cảm ơn!
Chris

Cuối cùng tôi đã tìm thấy điều này! Tôi cũng vậy!
lowkey

Theo "set", bạn có nghĩa là tạo ra khóa đó (không có nội dung)?
Peter Mortensen

1

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ì.


2
Bây giờ tôi nhận thấy rằng Windows sẽ đặt 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ì HOMEC:\Documents and Settings\username\Application Data. Thật kỳ lạ.
xe chạy lại



0

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 )


0

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

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.