Gibt es irgendwelche Vorteile bei der Verwendung von ~ / .emacs.d / init.el anstelle von ~ / .emacs?

108

Ich habe normalerweise ~/.emacsfür meine Konfigurationsdatei verwendet, aber ich habe bemerkt, dass andere verwenden ~/.emacs.d/init.el. Gibt es Vorteile für den init.elStandort? Nachteile?

Larry Coleman
quelle
4
Emacs (oder zumindest einige Versionen von Emacs) schreiben automatisch Inhalte auf .emacs.
Vivi
4
@Vivi Sofern Sie nicht über sehr alte Versionen sprechen, schreibt Emacs Dinge in user-init-file. Dies ist der Fall, .emacswenn Sie bereits eine .emacshatten und init.eldiese stattdessen verwendet haben.
Radon Rosborough
Die Leute konzentrierten sich auf die Vorteile der ~/.emacs.d/init.elVernachlässigung der Nachteile. Ich werde diesen Teil beantworten: Es hat überhaupt keine Nachteile!
Omar
Tangential, ab Version ab der Version 27.1 Emacs den XDG Config Weg bevorzugen ~/.config/emacs/über ~/.emacs.d/. IIUC, wenn das erstere existiert , wird das letztere nicht betrachtet.
Phils

Antworten:

103

Ja, das gibt es. Zitierendes Mondhorn auf Reddit :

  • $HOMEDadurch bleibt das Verzeichnis übersichtlich, da alle Emacs-Dateien ordentlich in einem einzigen Verzeichnis enthalten sind. Aus dem gleichen Grund schreiben alle modernen Emacs-Pakete ihre Caches, Historien usw. in ~/.emacs.d/.

  • Dies erleichtert die Versionskontrolle, insbesondere wenn Sie Ihre init.el-Datei in verschiedene Dateien aufteilen ~/.emacs.d. Sie können init.elwie jede andere Datei git clone /my/emacs/config.git ~/.emacs.dein Commit ausführen und erhalten auf einem neuen System die gesamte Emacs-Konfiguration, ohne eine Datei verknüpfen zu müssen $HOME.

nicael
quelle
3
Wie vereinfacht es die Versionskontrolle? Sie können Ihre Init-Datei aufteilen, ohne zu verwenden .emacs.d.
Gilles
3
Die Versionskontrolle wird dadurch nicht einfacher, wenn Sie nur über eine .emacs-Datei verfügen. Wenn Sie jedoch andere emacs-Dateien in .emacs.d haben, ist dies auch möglich. customSpeichert zum Beispiel Dateien in .emacs.d und wenn Sie init.el behalten, befinden sich alle Ihre versionskontrollierten Emacs-Dateien in einem Verzeichnis.
Ted Roden
4
Wenn Sie Ihr .emacs.d / -Verzeichnis vollständig versionieren, können Sie auch die Pakete, die Sie über packages.el (ELPA, MELPA…) installieren, unter Versionskontrolle halten. Auf diese Weise können Sie Ihre Konfiguration leichter auf mehrere Computer verteilen und feststellen, wo in Ihrer Konfiguration eine Regression eingeführt wurde (Sie verfolgen Ihre Abhängigkeiten). Die schlechte Seite ist, dass es ein ziemlich schweres Repository macht.
Tuxella
11
Versionskontrollsysteme versionieren nicht nur eine Datei, sondern möchten einen Ordner versionieren. Also Sie Version ~/, und fügen Sie nur Ihre .emacs. Aber jetzt müssen Sie sicherstellen, dass Sie keine anderen Dateien festschreiben, sodass Sie jede andere Datei in .hgignore oder .gitignore speichern ~/. Aber jetzt können Sie keine anderen Dateien in ~/, wie ~/.bashrcoder verfolgen ~/.bash_aliases.
zck
Related: github.com/RichiH/vcsh
wchargin
37

Ein zusätzlicher Vorteil: Wenn alles vorhanden ist .emacs.d, können Sie Ihre Emacs-Konfiguration in Dropbox (oder einer Alternative) behalten und die gesamte Konfiguration mit Ihrem Home-Verzeichnis verknüpfen. Das macht das Synchronisieren zwischen Computern trivial.

Shosti
quelle
25

Wenn Sie Emacs nur mit einer Init-Datei einrichten möchten, spielt es keine Rolle, ob ~/.emacsoder ~/.emacs.d/init.el. Es ist jedoch sinnvoll, ein Verzeichnis zu erstellen, sobald Sie mit dem Aufteilen Ihrer Init-Datei beginnen oder Emacs-bezogene Konfigurationen hinzufügen, z. B. eine Cask-Datei. Außerdem ist dies der Ort, an dem Sie die Datei mit Abkürzungsdefinitionen, die Datei für benutzerdefinierte Optionen ( M-x customize) usw. speichern .

Alles gut verstaut aufbewahren ~/.emacs.d.

Daniel Szmulewicz
quelle
6

27 Emacs wird eine neue Initialisierungsdatei einführen early-init-fileunter user-emacs-directory, nämlich an ~/.emacs.d/early-init.el. Ein weiterer Vorteil der Verwendung von ~/.emacs.d/init.elanstelle von ~/.emacsfor user-init-filebesteht darin, dass erstere beide Initialisierungsdateien aus Gründen der Konsistenz unter demselben Dach ablegen.

Bis zur Veröffentlichung von Emacs 27 finden Sie die Dokumentation für diese neue Funktion in den folgenden Dateien des Emacs-Quelltextbaums:

Basilikum
quelle
2

Nicht sicher , ob dies wirklich einen Unterschied in Bezug auf die Geschwindigkeit macht, aber Sie können Byte-kompilieren Ihr Setup leichter , wenn Ihre Konfiguration ist in .emacs.d/init.el(dh erstellen .emacs.d/init.elc)

armando.sano
quelle
1
Beachten Sie, dass dies ~/.emacs.elauch ein gültiger Init-Dateiname ist.
Phils
1

Sie verwenden ~/.emacs.d/init.eldiese Datei und ~/.emacsverknüpfen sie lediglich mit einem Symlink, falls andere Programme / Plugins erwarten, dass sie .emacs finden.

Auf einem MacOS- oder GNU / Linux-System wäre der Befehl:

ln -s ~/.emacs.d/init.el ~/.emacs

Auf diese Weise erhalten Sie alle Vorteile von VC für Ihre ~/emacs.dVerzeichnisstruktur und können einen kürzeren Namen verwenden, wenn Sie die Datei init.el bearbeiten müssen, ~/.emacsanstatt ~/emacs.d/init.el👍 einzugeben

cseder
quelle
Was sind diese mysteriösen "anderen Programme / Plugins", die "erwarten, .emacs zu finden"? Ich denke nicht, dass das ein echtes Problem ist.
Phils
1
Ein Beispiel könnte Quicklisp sein. Wenn Sie eine (ql: add-to-init-Datei) erstellen,
lautet der
Wie neugierig. Ich würde sagen, dass solche Fälle einen Fehlerbericht rechtfertigen würden. Emacs unterstützt seit sehr langer Zeit eine Vielzahl von Init-Dateinamen, und die Prioritätsreihenfolge ist klar dokumentiert. Es gibt also keinen guten Grund für andere Programme, das nicht richtig zu verstehen . Ein konkretes Beispiel habe ich allerdings nicht erwartet :) Prost.
Phils