Gdzie mogę znaleźć mój plik .emacs dla Emacsa działającego w systemie Windows?

115

Próbowałem znaleźć plik .emacs dla mojej instalacji systemu Windows dla Emacsa, ale nie mogłem go znaleźć. Czy ma taką samą nazwę pliku w systemie Windows jak w systemie Unix?

Czy muszę to tworzyć samodzielnie? Jeśli tak, w jakim konkretnym katalogu to się znajduje?

Promień
źródło

Odpowiedzi:

108

Skopiuj i wklej z FAQ Emacsa, http://www.gnu.org/software/emacs/windows/ :

Gdzie umieścić mój plik init?

W systemie Windows .emacsplik może zostać wywołany w _emacscelu 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.dkatalogu, 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:

  1. Jeśli ustawiona jest zmienna środowiskowa HOME, użyj wskazanego przez nią katalogu.
  2. Jeśli wpis rejestru HKCU \ SOFTWARE \ GNU \ Emacs \ HOME jest ustawiony, użyj wskazanego katalogu.
  3. Jeśli wpis rejestru HKLM \ SOFTWARE \ GNU \ Emacs \ HOME jest ustawiony, użyj wskazanego katalogu. Niezalecane, ponieważ powoduje, że użytkownicy współużytkują ten sam katalog HOME.
  4. Jeśli C:\.emacsistnieje, 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.
  5. Użyj katalogu AppData użytkownika, zwykle katalogu o nazwie Dane aplikacji w katalogu profilu użytkownika, którego lokalizacja różni się w zależności od wersji systemu Windows i tego, czy komputer jest częścią domeny.

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 .

Węzeł
źródło
1
Lub może być konieczne znalezienie za pomocą Cx Cf ~ / _emacs (zamiast kropki). Używanie podkreślenia w init jest powszechną (i sugerowaną) praktyką zarówno dla Vima, jak i Emacsa.
labirynt
Emacs narzeka, że ​​„_emacs” jest przestarzały :(
Brian Z,
Dzięki. To wyjaśnienie pomogło mi właściwie skonfigurować emacs po samouczku clojure, gdzie nawet o tym nie wspomnieli. Utworzono zmienną HOME w systemie Windows i teraz działa.
Siniyas
Dla mnie, w odniesieniu do twojego punktu 5 powyżej, katalog, którego szuka dla mnie emacs, to C: \ Users \ userid \ AppData \ Roaming w systemie Windows 7, ale oczywiście mój komputer znajduje się w domenie.
user8128167
W systemie Windows 10 ustawiłem zmienną HOME na% USERPROFILE%, aby uniknąć sufiksu AppData.
Bae
80

Powinien być przechowywany w zmiennej user-init-file. Użyj, C-H v user-init-file RETaby sprawdzić. Możesz również otworzyć go bezpośrednio za pomocąM-x eval-expression RET (find-file user-init-file) RET

odszedł
źródło
8
Jest to tak pomocne, że jestem zaskoczony, że nie ma o tym wzmianki w sekcji podręcznika dotyczącej plików init.
Brian Z
Zastanawiam się, dlaczego kiedy tego próbuję, dostaję trailing garbage following expression?
Marko Grdinic
Czy użyłeś nawiasów?
Jose Romero,
29

Otwórz plik w ten sposób w Emacs dla Windows:

C-x C-f ~/.emacs

Więcej informacji na Wiki Emacsa

sverrejoh
źródło
11
A następnie kliknij Plik> Otwórz plik ... lub Zapisz jako ..., aby zobaczyć, gdzie znajduje się ~ / w znajomym oknie dialogowym Otwieranie systemu Windows.
Yoo
21

Na moim pudełku z Vista jest w C:\Users\<USER>\AppData\Roaming\

Alexander Kojevnikov
źródło
1
To samo dotyczy systemu Windows 8.1 (Emacs 24) z wyjątkiem. Kiedy Emacs jest otwierany z Eksploratora Windows, łącza lub konsoli cmd, używa pliku profilu C: \ Users \ <USER> \ AppData \ Roaming \ .emacs, ale jeśli otworzysz Emacsa z konsoli PowerShell, Emacs będzie szukał pliku .emacs w C : \ Users \ <USER> folder.
kri
To zadziałało dla mnie. Utworzyłem plik .emacs w katalogu Roaming w AppData i działa jak urok! Windows 10.
Retro Gamer,
Pracowałem w systemie Windows 10
Alex Kaszynski
6

Zauważ, że samo wpisanie Ctrl-x Ctrl-f ~/.emacsi 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:

  1. Kliknij opcje i przewiń w dół do „Ustaw domyślną czcionkę ...”
  2. Zmień ustawienie czcionki i kliknij OK
  3. W menu opcji przejdź do „Zapisz opcje”
  4. Kiedy opcje są zapisane, system zapisuje swój plik .emacs i możesz odczytać ścieżkę do pliku w minibuforze na dole ekranu Emacsa
user3020269
źródło
Zapoznaj się z dokumentacją dotyczącą formatowania odpowiedzi. Jest to dość łatwe i przyniesie ci większą reputację.
Bhavik Shah
Kiedy zapisałem plik o nazwie ~ / .emacs.el, został utworzony w 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.elco 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).
PatS
4

W systemie Windows 7 umieść init.elplik 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.elplik nie został nazwany init.el.txt. To jest coś, co robi Windows, jeśli utworzysz plik za pomocą jakiegoś edytora, takiego jak Notatnik.

caisah
źródło
4

W wersjach Emacsa na Windows powyżej 22 wydaje się, że przeniósł się do

~/.emacs.d/init.el

, ~będąca wartością zmiennej środowiskowej HOME (zobacz Panel sterowania → SystemZaawansowaneZmienne środowiskowe ).

Sam plik może nie istnieć. W takim razie po prostu go utwórz.

Gauthier
źródło
3

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.elplik 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.elponieważ 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-directorybył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-namejak 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.elplik do %USERPROFILE%\AppData\Roaming\.emacs.d\init.eli 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/*.elmusiał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 HOMEzmienną ś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.eli 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\Roamingmoże być akceptowalne, ale ponieważ niektóre aplikacje używają %USERPROFILE%, niektóre używają, %USERPROFILE\AppData\Roaminga inne używają %USERPROFILE\AppData\Localgo, po prostu utrudnia określenie, gdzie znaleźć konfigurację pliki.

Wolę mieć wszystko w moim katalogu% USERPROFILE% lub $ HOME.

Kolejne podobne pytanie było tutaj:

PatS
źródło
„Pokochałem to, jak działa Windows. (Nie)” - Ten problem nie ma nic wspólnego z Windows poza tym, co programiści Emacsa zrobili ludziom, którzy uruchamiają Emacsa w systemie Windows.
Chris Charabaruk
2

Jak odpowiedziała kanja, ścieżka do tego pliku jest przechowywana w user-init-filezmiennej (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

phils
źródło
2

W Emacs 23 i Windows 7 działa tylko wtedy, gdy ustawisz:

HKCU\SOFTWARE\GNU\Emacs\HOME
dawny_
źródło
Wreszcie znalazłem to! Dzięki!
Chris,
Wreszcie znalazłem to! Ja też!
niższy klawisz
Czy przez „zestaw” masz na myśli tworzenie tego klucza (bez zawartości)?
Peter Mortensen,
1

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.

remcykling
źródło
2
Zauważyłem teraz, że system Windows ustawia HOMEzmienną środowiskową inaczej, w zależności od tego, jak zacznę runemacs.exe. Jeśli uruchomię go z poziomu Eksploratora, HOMEjest ustawiony na C:\Documents and Settings\username, ale jeśli uruchomię go z menu Start, HOMEjest C:\Documents and Settings\username\Application Data. Dziwne.
remiksy
1

W systemie Windows XP jest to:

C:\Documents and Settings\yourusernamehere\Application Data\
Niedźwiedź polarny
źródło
0

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 )

kri
źródło
0

Dla Windows7 i Emacs26.3 .3


jeśli HOMEustawiono środowisko, .emacsplik powinien znajdować się w tym folderze.

w przeciwnym razie powinien znajdować się w c:\.


W obu przypadkach, jeśli .emacsnie ma, _emacsnależy użyć.

Dzieje się tak, ponieważ nie możemy utworzyć .emacspliku zgodnie z regułami nazewnictwa plików systemu Windows (ale możemy go pobrać lub skopiować z innego miejsca).

ZhaoGang
źródło