Czy są jakieś zalety używania ~ / .emacs.d / init.el zamiast ~ / .emacs?
108
Zwykle używałem ~/.emacsmojego pliku konfiguracyjnego, ale zauważyłem, że inni go używają ~/.emacs.d/init.el. Czy lokalizacja ma zalety init.el? Jakieś wady?
Emacs (lub przynajmniej niektóre wersje emacsa) automatycznie zapisują pliki na .emacs.
Vivi
4
@Vivi Jeśli nie mówisz o bardzo starych wersjach, Emacs zapisuje w nich różne rzeczy user-init-file. Będzie tak, .emacsjeśli już miałeś .emacs, i init.eljeśli użyłeś tego zamiast.
Radon Rosborough
Ludzie koncentrowali się na zaletach ~/.emacs.d/init.elzaniedbywania wad. Odpowiem na to pytanie: nie ma żadnych wad!
Omar
Stycznie, począwszy od wersji release 27.1 Emacs wolą ścieżkę config XDG ~/.config/emacs/powyżej ~/.emacs.d/. IIUC, jeśli ten pierwszy istnieje , nie będzie on rozpatrywany.
Utrzymuje $HOMEkatalog w porządku, ponieważ wszystkie pliki Emacsa są starannie zawarte w jednym katalogu. Z tego samego powodu wszystkie współczesne pakiety Emacsa zapisują swoje pamięci podręczne, historie itp ~/.emacs.d/.
Ułatwia kontrolę wersji, zwłaszcza jeśli podzielisz plik init.el na różne pliki ~/.emacs.d. Możesz po prostu zatwierdzić init.eljak każdy inny plik, a git clone /my/emacs/config.git ~/.emacs.dna nowym systemie otrzymasz całą konfigurację Emacsa, bez konieczności łączenia pliku $HOME.
Jak to ułatwia kontrolę wersji? Możesz podzielić plik init bez użycia .emacs.d.
Gilles
3
Nie ułatwia kontroli wersji, jeśli masz tylko plik .emacs, ale jeśli masz inne pliki emacs w .emacs.d, robi to. Na przykład customzapisuje pliki w .emacs.d, a jeśli trzymasz init.el w swoich plikach emacs z kontrolą wersji, to one znajdują się w jednym katalogu.
Ted Roden
4
Całkowicie wersjonując swój katalog .emacs.d /, możesz również kontrolować wersje, które instalujesz za pośrednictwem packages.el (ELPA, MELPA…). Ułatwia to udostępnianie konfiguracji między wieloma komputerami i znajdowanie regresji w konfiguracji (śledzenie zależności). Złą stroną jest to, że tworzy dość ciężkie repozytorium.
tuxella,
11
Systemy kontroli wersji nie wersjonują tylko jednego pliku - chcą wersjonować folder. Więc wersja ~/i dodaj tylko swoją .emacs. Ale teraz musisz się upewnić, że nie zatwierdzasz żadnych innych plików, więc .hgignore lub .gitignore każdy inny plik w ~/. Ale teraz nie możesz śledzić żadnych innych plików ~/, takich jak ~/.bashrclub ~/.bash_aliases.
Dodatkowa zaleta: jeśli wszystko jest w .emacs.dśrodku, możesz zachować konfigurację Emacsa na Dropbox (lub alternatywnie) i dowiązać całą konfigurację do katalogu domowego. To sprawia, że synchronizacja między komputerami jest banalna.
Jeśli wszystko, czego potrzebujesz, aby skonfigurować Emacsa tak, jak lubisz, to plik inicjujący, nie ma znaczenia, czy to ~/.emacsczy ~/.emacs.d/init.el. Ale sensowne jest utworzenie katalogu w momencie, gdy zaczniesz dzielić plik init lub dodasz konfiguracje związane z Emacsem, na przykład plik Cask. Ponadto jest to miejsce, w którym zapiszesz plik z definicjami skrótów, plik z opcjami niestandardowymi ( M-x customize) itp.
Emacs 27 wprowadzi nowy plik inicjalizacji early-init-filepod user-emacs-directory, a mianowicie o ~/.emacs.d/early-init.el. Kolejną korzyścią z używania ~/.emacs.d/init.elzamiast ~/.emacsdla user-init-filejest to, że ta pierwsza umieści oba pliki inicjujące pod tym samym dachem, dla zachowania spójności.
Do czasu wydania Emacsa 27 dokumentację tej nowej funkcji można znaleźć w następujących plikach drzewa źródeł Emacsa:
Nie jestem pewien, czy to naprawdę wpływa na szybkość, ale możesz łatwiej kompilować bajty, jeśli konfiguracja jest w .emacs.d/init.el(tj. Utwórz .emacs.d/init.elc)
Zauważ, że ~/.emacs.eljest to również poprawna nazwa pliku inicjującego.
phils
1
Używasz ~/.emacs.d/init.eli po prostu symbolizujesz ten plik ~/.emacs, na wypadek, gdyby inne programy / wtyczki spodziewały się znaleźć .emacs.
W systemie macOS lub GNU / Linux komenda wyglądałaby następująco:
ln -s ~/.emacs.d/init.el ~/.emacs
W ten sposób zyskujesz wszystkie zalety VC w ~/emacs.dstrukturze katalogów i będziesz mógł użyć krótszej nazwy, gdy będziesz musiał edytować plik init.el ~/.emacszamiast pisać ~/emacs.d/init.el👍
Co to za tajemnicze „inne programy / wtyczki”, które „spodziewają się znaleźć .emacs”? Nie sądzę, żeby to była prawdziwa troska.
phils
1
Jednym z przykładów może być Quicklisp, jeśli zrobisz (ql: add-to-init-file) domyślnie ~ / .emacs
cseder
Jakie ciekawe. Powiedziałbym, że takie przypadki uzasadniają zgłoszenia błędów - Emacs obsługuje bardzo wiele różnych nazw plików init od bardzo długiego czasu, a sekwencja priorytetów jest jasno udokumentowana, więc nie ma żadnego powodu, aby inne programy nie robiły tego poprawnie . Jednak wcale nie spodziewałem się prawdziwego przykładu :) Pozdrawiam.
user-init-file
. Będzie tak,.emacs
jeśli już miałeś.emacs
, iinit.el
jeśli użyłeś tego zamiast.~/.emacs.d/init.el
zaniedbywania wad. Odpowiem na to pytanie: nie ma żadnych wad!~/.config/emacs/
powyżej~/.emacs.d/
. IIUC, jeśli ten pierwszy istnieje , nie będzie on rozpatrywany.Odpowiedzi:
Tak, są. Cytując lunaryorn na Reddit :
źródło
.emacs.d
.custom
zapisuje pliki w .emacs.d, a jeśli trzymasz init.el w swoich plikach emacs z kontrolą wersji, to one znajdują się w jednym katalogu.~/
i dodaj tylko swoją.emacs
. Ale teraz musisz się upewnić, że nie zatwierdzasz żadnych innych plików, więc .hgignore lub .gitignore każdy inny plik w~/
. Ale teraz nie możesz śledzić żadnych innych plików~/
, takich jak~/.bashrc
lub~/.bash_aliases
.Dodatkowa zaleta: jeśli wszystko jest w
.emacs.d
środku, możesz zachować konfigurację Emacsa na Dropbox (lub alternatywnie) i dowiązać całą konfigurację do katalogu domowego. To sprawia, że synchronizacja między komputerami jest banalna.źródło
Jeśli wszystko, czego potrzebujesz, aby skonfigurować Emacsa tak, jak lubisz, to plik inicjujący, nie ma znaczenia, czy to
~/.emacs
czy~/.emacs.d/init.el
. Ale sensowne jest utworzenie katalogu w momencie, gdy zaczniesz dzielić plik init lub dodasz konfiguracje związane z Emacsem, na przykład plik Cask. Ponadto jest to miejsce, w którym zapiszesz plik z definicjami skrótów, plik z opcjami niestandardowymi (M-x customize
) itp.Trzymaj wszystko starannie schowane
~/.emacs.d
.źródło
Emacs 27 wprowadzi nowy plik inicjalizacji
early-init-file
poduser-emacs-directory
, a mianowicie o~/.emacs.d/early-init.el
. Kolejną korzyścią z używania~/.emacs.d/init.el
zamiast~/.emacs
dlauser-init-file
jest to, że ta pierwsza umieści oba pliki inicjujące pod tym samym dachem, dla zachowania spójności.Do czasu wydania Emacsa 27 dokumentację tej nowej funkcji można znaleźć w następujących plikach drzewa źródeł Emacsa:
etc/NEWS
doc/emacs/custom.texi
, węzeł(emacs) Early Init File
źródło
Nie jestem pewien, czy to naprawdę wpływa na szybkość, ale możesz łatwiej kompilować bajty, jeśli konfiguracja jest w
.emacs.d/init.el
(tj. Utwórz.emacs.d/init.elc
)źródło
~/.emacs.el
jest to również poprawna nazwa pliku inicjującego.Używasz
~/.emacs.d/init.el
i po prostu symbolizujesz ten plik~/.emacs
, na wypadek, gdyby inne programy / wtyczki spodziewały się znaleźć .emacs.W systemie macOS lub GNU / Linux komenda wyglądałaby następująco:
W ten sposób zyskujesz wszystkie zalety VC w
~/emacs.d
strukturze katalogów i będziesz mógł użyć krótszej nazwy, gdy będziesz musiał edytować plik init.el~/.emacs
zamiast pisać~/emacs.d/init.el
👍źródło