Antworten:
Emacs sucht an mehreren Stellen nach Init-Dateien, wie im Handbuch dokumentiert . Wenn Sie Emacs anpassen möchten, müssen Sie mit einer dieser Dateien beginnen.
Ein gängiger Ansatz besteht darin, die Datei init.el
in Ihrem zu verwenden user-emacs-directory
, anstatt ein .emacs
in Ihrem HOME-Verzeichnis zu haben.
Der user-emacs-directory
Standardwert ist ~/.emacs.d
, also immer noch relativ zu Ihrem HOME, aber der Vorteil dieses Ansatzes ist, dass Sie alles, was mit Ihrer Emacs-Konfiguration zu tun hat, an einem Ort aufbewahren können. Dieses Verzeichnis kann sich unter Versionskontrolle befinden, gesichert sein, von mehreren Computern gemeinsam genutzt werden usw. Sie können einen Symlink ( mklink
unter Windows) verwenden, um die Dateien an einem anderen Ort zu speichern.
Beispielsweise ist es durchaus üblich, dass Leute ihre Emacs-Konfiguration auf Github beibehalten. Sie können viele Beispiele dafür finden, indem Sie Github mit init.el-Dateien nach elisp-Projekten durchsuchen .
user-emacs-directory
Bei jeder Windows-Installation, bei der ich Emacs verwende, befindet sich der folgende Code in einer .emacs
Datei am angegebenen Speicherort:
;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)
Auf diese Weise kann ich meine .emacs
und .emacs.d/
wo ich will.
Ihre .emacs-Datei befindet sich in Ihrem HOME
Verzeichnis. Aus dem Emacs-Handbuch:
Das Windows-Äquivalent zu HOME ist das benutzerspezifische Anwendungsdatenverzeichnis. Der tatsächliche Speicherort hängt von der Windows-Version ab ...
Sie können diesen Standardwert von HOME überschreiben, indem Sie die Umgebungsvariable HOME explizit so einstellen, dass sie auf ein beliebiges Verzeichnis auf Ihrem System verweist. HOME kann entweder über die Eingabeaufforderung der Befehlsshell oder über das Dialogfeld "Eigenschaften" von "Arbeitsplatz" festgelegt werden. HOME kann auch in der Systemregistrierung eingestellt werden, siehe MS-Windows-Registrierung.
HOME
Verzeichnis ansehen, in etwas völlig anderes zu ändern . Daher nenne ich diese Änderung einen Hack. Es ist offensichtlich in Ordnung, ihn auf den richtigen Wert zu setzen.
Du sagst:
Ich weiß, wie man das Home-Verzeichnis einstellt. Aus Gründen der Versionskontrolle möchte ich jedoch festlegen, dass Emacs aus einem anderen Verzeichnis gelesen werden (damit ich ein für Emacs spezifisches Verzeichnis haben kann) .
Ihre Init-Datei befindet sich in Ihrem Home-Verzeichnis, das Sie überall ablegen können. Anscheinend möchten Sie ein anderes Verzeichnis für die Inhalte haben, die Emacs lädt. Das ist kein Problem. Legen Sie Ihre Init-Datei in Ihrem Ausgangsverzeichnis ab, und lassen Sie diese Datei dem Wert der Variablen ein weiteres Verzeichnis hinzufügen. load-path
Anschließend benötigen Sie alle anderen Emacs-Bibliotheken, die Sie verwenden möchten. Legen Sie diese Bibliotheken in das andere Verzeichnis.
IOW, Ihre Init-Datei muss nichts weiter als das Setup des Verzeichnisses enthalten, in dem Sie die Emacs-Bibliotheken aufbewahren, die Sie laden möchten.
Der Vollständigkeit halber verweise ich auf:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
Welches besagt, dass Sie einen HOME
Wert im Registrierungspfad festlegen können :
HKCU\SOFTWARE\GNU\Emacs\HOME
Dieser Wert wird jedoch von der Umgebungsvariablen überschrieben HOME
.
Denke, du könntest (setq user-init-file "C:/path/to/.emacs")
und andere von @ryan vorgeschlagene Zeilen in site-start.el einfügen
Ihre Site verfügt möglicherweise auch über eine Site-Startdatei. Diese Datei heißt site-start.el, sofern vorhanden. Wie default.el findet Emacs diese Datei über den Standard-Suchpfad für Lisp-Bibliotheken. Emacs lädt diese Bibliothek, bevor Ihre Init-Datei geladen wird.
site-start.el
laden, dieinit.el
Sie nicht mehr benötigen a.emacs
. In diesem Beispiel müssen Sie nicht mit dem Basisverzeichnis herumspielen (es sei denn, jemand anderes auf dem Computer legt dort Dinge ab, die sich auf Ihre Arbeit auswirken). Mit anderen Worten, es kann leer sein und Sie müssen es nie berühren.