Odpowiedzi:
Skopiuj i wklej z FAQ Emacsa, http://www.gnu.org/software/emacs/windows/ :
W systemie Windows .emacs
plik może zostać wywołany w _emacs
celu zapewnienia zgodności wstecznej z systemami plików DOS i FAT, w których nazwy plików nie mogą zaczynać się od kropki. Niektórzy użytkownicy wolą nadal używać takiej nazwy, ponieważ Eksplorator Windows nie może utworzyć pliku o nazwie zaczynającej się od kropki, mimo że system plików i większość innych programów sobie z tym poradzi. W Emacsie 22 i nowszych plikach inicjalizacyjnych można również wywołać .emacs.d/init.el
. Wiele innych plików tworzonych przez pakiety Lisp jest teraz również przechowywanych w tym .emacs.d
katalogu, dzięki czemu wszystkie pliki związane z Emacsem są w jednym miejscu.
Wszystkie wymienione powyżej pliki powinny znaleźć się w Twoim katalogu HOME. Katalog HOME jest określany przez wykonanie poniższych kroków:
C:\.emacs
istnieje, użyj C:/
. Ma to na celu zapewnienie kompatybilności wstecznej, ponieważ poprzednie wersje były domyślnie C:/
ustawione, jeśli HOME nie zostało ustawione.W Emacsie ~
nazwa pliku jest rozwijana na początku do katalogu HOME, więc zawsze możesz znaleźć swój plik .emacs z rozszerzeniem C-x C-f ~/.emacs
.
Więcej informacji można znaleźć w katalogach HOME i Startup w systemie MS-Windows .
Powinien być przechowywany w zmiennej user-init-file. Użyj, C-H v user-init-file RET
aby sprawdzić. Możesz również otworzyć go bezpośrednio za pomocąM-x eval-expression RET (find-file user-init-file) RET
trailing garbage following expression
?
Na moim pudełku z Vista jest w C:\Users\<USER>\AppData\Roaming\
Zauważ, że samo wpisanie Ctrl-x Ctrl-f ~/.emacs
i utworzenie pliku może NIE wystarczyć .
Może się zdarzyć, że aplikacja Emacsa używa innego miejsca do przechowywania pliku init, a jeśli tak, to utworzenie pliku ~ / .emacs po prostu tworzy bezużyteczny plik, który aplikacja Emacsa ignoruje.
Możesz także chcieć zrobić coś więcej niż tylko uzyskać dostęp do pliku inicjalizacyjnego .emacs, ale możesz chcieć wiedzieć, gdzie on się znajduje, tj. Jego ścieżkę dostępu.
Aby to osiągnąć, istnieją dwie metody:
Prosty sposób: wpisz Ctrl+ H Vplik inicjujący użytkownikaReturn
Nieco trudniejszy sposób: Możesz dowiedzieć się, gdzie Twój system przechowuje własny plik .emacs, wykonując:
c:/Users/user1/AppData/Roaming/.emacs.el
. Ta strona emacswiki.org/emacs/DotEmacsDotD pomogła mi uświadomić sobie, że muszę nazwać plik, ~/.emacs.d/init.el
co oznaczało, że plik w systemie plików był w c:\Users\user1\AppData\Roaming\.emacs.d\init.el
(zupełnie nie taki, jakiego się spodziewałem). Wolę ustawić zmienną środowiskową HOME i umieścić plik w moim %USERPROFILE%
katalogu, który jest logicznym katalogiem HOME w systemie Windows (przynajmniej jeśli o mnie chodzi).
W systemie Windows 7 umieść init.el
plik w miejscu C:\Users\user-name\AppData\Roaming\.emacs.d\
, gdzie nazwa użytkownika to folder użytkownika / logowania.
Uważaj, aby Twój init.el
plik nie został nazwany init.el.txt
. To jest coś, co robi Windows, jeśli utworzysz plik za pomocą jakiegoś edytora, takiego jak Notatnik.
Musisz utworzyć plik inicjalizacyjny emacsa. Jeden nie jest tworzony automatycznie. Miałem podobny problem i ta odpowiedź śledzi to, co zrobiłem.
Mój problem polegał na tym, że mój ~/.emacs.el
plik się nie ładował. Dziwne, ponieważ zawsze mi to działało.
To pytanie / odpowiedź pomogło mi, ale musiałem umieścić mój plik init w pliku, %USERPROFILE%\AppData\Roaming\.emacs.d\init.el
ponieważ jest to najwyraźniej domyślne zachowanie w systemie Windows.
Aby rozwiązać ten problem, uruchomiłem następujące polecenie w buforze emacs * scratch * .
user-emacs-directory
"~/.emacs.d/"
Kiedy zobaczyłem user-emacs-directory
było ~/.emacs.d
, po prostu przeniósł się do mojego pliku .emacs.el %USERPROFILE%\.emacs.d\init.el
. Ale to nadal nie działało. Kontynuowałem, expand-file-name
jak pokazano poniżej:
(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"
Pokochałem sposób działania systemu Windows. (nie) Więc przeniosłem mój emacs.el
plik do %USERPROFILE%\AppData\Roaming\.emacs.d\init.el
i to zadziałało. Plik był teraz odczytywany. Ale dostałem inne błędy, ponieważ mój plik inicjalizacyjny załadował inne (osobiste pliki emacsa) (w formacie ~/myenv/emacs/*.el
.
Warning (initialization): An error occurred while loading ‘c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:
Hum ... Wygląda na to, że wszystkie moje pliki ~/myenv/emacs/*.el
musiałyby zostać przeniesione, aby to zadziałało, ale nie chciałem tego robić. Wtedy zdałem sobie sprawę, że ponieważ zmienna środowiskowa HOME nie została ustawiona, emacs zachowuje się domyślnie .
ROZWIĄZANIE
Kiedy ustawiłem HOME
zmienną środowiskową systemu Windows, %USERPROFILE%
wszystko zaczęło działać tak, jak przez ostatnie 25 lat. :-)
Aby ustawić zmienną środowiskową HOME, wpisałem WindowsKey + "edytuj zmienne środowiskowe dla twojego konta", aby otworzyć okno dialogowe Zmienne środowiskowe i wprowadziłem HOME=%USERPROFILE%
.
Teraz mój plik inicjalizacyjny emacsa .emacs.el jest z powrotem na swoim właściwym miejscu $HOME/.emacs.el
i nie jest w%USERPROFILE%\AppData\Roaming\.emacs.d\init.el
Aby być uczciwym, gdyby system Windows miał tylko jedno miejsce do umieszczania plików dla pakietów zainstalowanych przez użytkownika, rozwiązanie polegające na uczynieniu HOME = %USERPROFILE\AppData\Roaming
może być akceptowalne, ale ponieważ niektóre aplikacje używają %USERPROFILE%
, niektóre używają, %USERPROFILE\AppData\Roaming
a inne używają %USERPROFILE\AppData\Local
go, po prostu utrudnia określenie, gdzie znaleźć konfigurację pliki.
Wolę mieć wszystko w moim katalogu% USERPROFILE% lub $ HOME.
Kolejne podobne pytanie było tutaj:
Jak odpowiedziała kanja, ścieżka do tego pliku jest przechowywana w user-init-file
zmiennej (lub jeśli nie istnieje plik init, zmienna zawiera domyślną wartość miejsca jej utworzenia).
Więc niezależnie od tego, której z możliwych nazw plików init używasz i w którym katalogu się znajduje, powinieneś być w stanie odwiedzić swój plik init za pomocą:
M-: (find-file user-init-file)
RET
Lub wyświetl pełną ścieżkę w obszarze echa za pomocą:
M-: (expand-file-name user-init-file)
RET
W Emacs 23 i Windows 7 działa tylko wtedy, gdy ustawisz:
HKCU\SOFTWARE\GNU\Emacs\HOME
Zauważyłem, że Emacs 22 od czasu do czasu otwiera „C: \ Documents and Settings \ nazwa użytkownika \ Dane aplikacji \ .emacs” lub po prostu „C: \ Documents and Settings \ nazwa użytkownika \ .emacs” na moim komputerze XP. Nie znalazłem wyjaśnienia, dlaczego czasami zmienia zdanie.
~ zawsze będzie wskazywał na to, co bieżąca instancja emacsa uważa za HOME, ale wskazówka kanji (Ch v user-init-file) zawsze powie ci, do czego właściwie odwzorowuje ~ / .emacs.
HOME
zmienną środowiskową inaczej, w zależności od tego, jak zacznę runemacs.exe
. Jeśli uruchomię go z poziomu Eksploratora, HOME
jest ustawiony na C:\Documents and Settings\username
, ale jeśli uruchomię go z menu Start, HOME
jest C:\Documents and Settings\username\Application Data
. Dziwne.
W systemie Windows XP jest to:
C:\Documents and Settings\yourusernamehere\Application Data\
Istnieje lista katalogów oparta na wersji systemu Windows i dodatkowych informacji: http://www.gnu.org/software/emacs/manual/html_node/emacs/Windows-HOME.html
W systemie Windows 8.1, jeśli Emacs jest uruchamiany z Eksploratora Windows , skrótu lub konsoli cmd , używa pliku inicjującego C: \ Users \ <USER> \ AppData \ Roaming.emacs . Kiedy uruchamiam Emacsa z PowerShell, Emacs szuka swojego pliku init w folderze C: \ Users \ <USER> . Rozwiązaniem tego problemu było ustawienie zmiennej środowiskowej użytkownika HOME (Panel sterowania \ System i zabezpieczenia \ System-> Zaawansowane ustawienia systemu-> Zaawansowane-> Zmienne środowiskowe) na C: \ Users \ <USER> . Po tej zmianie bez względu na to, jak uruchomię Emacsa, używa tego samego pliku init (zobacz zaakceptowaną odpowiedź na to pytanie )
Dla Windows7 i Emacs26.3 .3
jeśli HOME
ustawiono środowisko, .emacs
plik powinien znajdować się w tym folderze.
w przeciwnym razie powinien znajdować się w c:\
.
W obu przypadkach, jeśli .emacs
nie ma, _emacs
należy użyć.
Dzieje się tak, ponieważ nie możemy utworzyć .emacs
pliku zgodnie z regułami nazewnictwa plików systemu Windows (ale możemy go pobrać lub skopiować z innego miejsca).