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?
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.
$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.
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.
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.
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 .
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:
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)
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
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.
user-init-file
. Dies ist der Fall,.emacs
wenn Sie bereits eine.emacs
hatten undinit.el
diese stattdessen verwendet haben.~/.emacs.d/init.el
Vernachlässigung der Nachteile. Ich werde diesen Teil beantworten: Es hat überhaupt keine Nachteile!~/.config/emacs/
über~/.emacs.d/
. IIUC, wenn das erstere existiert , wird das letztere nicht betrachtet.Antworten:
Ja, das gibt es. Zitierendes Mondhorn auf Reddit :
quelle
.emacs.d
.custom
Speichert zum Beispiel Dateien in .emacs.d und wenn Sie init.el behalten, befinden sich alle Ihre versionskontrollierten Emacs-Dateien in einem Verzeichnis.~/
, 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~/.bashrc
oder verfolgen~/.bash_aliases
.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.quelle
Wenn Sie Emacs nur mit einer Init-Datei einrichten möchten, spielt es keine Rolle, ob
~/.emacs
oder~/.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
.quelle
27 Emacs wird eine neue Initialisierungsdatei einführen
early-init-file
unteruser-emacs-directory
, nämlich an~/.emacs.d/early-init.el
. Ein weiterer Vorteil der Verwendung von~/.emacs.d/init.el
anstelle von~/.emacs
foruser-init-file
besteht 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:
etc/NEWS
doc/emacs/custom.texi
Knoten(emacs) Early Init File
quelle
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
)quelle
~/.emacs.el
auch ein gültiger Init-Dateiname ist.Sie verwenden
~/.emacs.d/init.el
diese Datei und~/.emacs
verknü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:
Auf diese Weise erhalten Sie alle Vorteile von VC für Ihre
~/emacs.d
Verzeichnisstruktur und können einen kürzeren Namen verwenden, wenn Sie die Datei init.el bearbeiten müssen,~/.emacs
anstatt~/emacs.d/init.el
👍 einzugebenquelle