Wo finde ich meine .emacs-Datei für Emacs unter Windows?

115

Ich habe versucht, nach der .emacs-Datei für meine Windows-Installation für Emacs zu suchen, konnte sie jedoch nicht finden. Hat es unter Windows den gleichen Dateinamen wie unter Unix?

Muss ich es selbst erstellen? Wenn ja, unter welches spezifische Verzeichnis geht es?

Strahl
quelle

Antworten:

108

Kopieren und Einfügen aus den Emacs-FAQ, http://www.gnu.org/software/emacs/windows/ :

Wo lege ich meine Init-Datei ab?

Unter Windows wird die .emacsDatei möglicherweise _emacsaus Gründen der Abwärtskompatibilität mit DOS- und FAT-Dateisystemen aufgerufen, bei denen Dateinamen nicht mit einem Punkt beginnen konnten. Einige Benutzer bevorzugen es, einen solchen Namen weiterhin zu verwenden, da Windows Explorer keine Datei mit einem Namen erstellen kann, der mit einem Punkt beginnt, obwohl das Dateisystem und die meisten anderen Programme damit umgehen können. In Emacs 22 und höher kann auch die Init-Datei aufgerufen werden .emacs.d/init.el. Viele der anderen Dateien, die von Lisp-Paketen erstellt werden, werden jetzt auch im .emacs.dVerzeichnis gespeichert , sodass alle Ihre Emacs-bezogenen Dateien an einem Ort bleiben .

Alle oben genannten Dateien sollten sich in Ihrem HOME-Verzeichnis befinden. Das HOME-Verzeichnis wird wie folgt bestimmt:

  1. Wenn die Umgebungsvariable HOME festgelegt ist, verwenden Sie das angegebene Verzeichnis.
  2. Wenn der Registrierungseintrag HKCU \ SOFTWARE \ GNU \ Emacs \ HOME festgelegt ist, verwenden Sie das angegebene Verzeichnis.
  3. Wenn der Registrierungseintrag HKLM \ SOFTWARE \ GNU \ Emacs \ HOME festgelegt ist, verwenden Sie das angegebene Verzeichnis. Nicht empfohlen, da Benutzer dasselbe HOME-Verzeichnis verwenden.
  4. Wenn C:\.emacsvorhanden, dann verwenden C:/. Dies dient der Abwärtskompatibilität, da in früheren Versionen standardmäßig C:/HOME nicht festgelegt wurde.
  5. Verwenden Sie das AppData-Verzeichnis des Benutzers, normalerweise ein Verzeichnis namens Application Data unter dem Profilverzeichnis des Benutzers, dessen Speicherort je nach Windows-Version und der Zugehörigkeit des Computers zu einer Domäne variiert.

In Emacs wird ~am Anfang eines Dateinamens Ihr HOME-Verzeichnis erweitert, sodass Sie Ihre .emacs-Datei immer mit finden können C-x C-f ~/.emacs.

Weitere Informationen finden Sie unter HOME und Startup Directories unter MS-Windows .

Knoten
quelle
1
Oder Sie müssen möglicherweise mit Cx Cf ~ / _emacs (anstelle des Punkts) suchen. Die Verwendung des Unterstrichs für Ihre Init ist sowohl für Vim als auch für Emacs üblich (und empfohlen).
Labyrinth
Emacs beschwert sich, dass "_emacs" veraltet ist :(
Brian Z
Vielen Dank. Diese Erklärung hat mir tatsächlich geholfen, Emacs nach einem Clojure-Tutorial richtig einzurichten, in dem sie dies nicht einmal erwähnt haben. Erstellt die HOME-Variable unter Windows und jetzt funktioniert es.
Siniyas
In Bezug auf Punkt 5 oben lautet das Verzeichnis, in dem Emacs nach mir sucht, C: \ Users \ userid \ AppData \ Roaming unter Windows 7, aber natürlich befindet sich mein Computer in einer Domäne.
user8128167
Unter Windows 10 habe ich die Variable HOME auf% USERPROFILE% gesetzt, um das AppData-Suffix zu vermeiden.
Bae
80

Es sollte in der Variablen user-init-file gespeichert werden. Verwenden Sie C-H v user-init-file RETzu überprüfen. Sie können es auch direkt mit öffnenM-x eval-expression RET (find-file user-init-file) RET

Weg
quelle
8
Dies ist so hilfreich, dass ich überrascht bin, dass es im manuellen Abschnitt über Init-Dateien nicht erwähnt wird.
Brian Z
Ich frage mich, warum ich bekomme, wenn ich das versuche trailing garbage following expression?
Marko Grdinic
Hast du die Klammer benutzt?
Jose Romero
29

Öffnen Sie die Datei wie folgt in Emacs für Windows:

C-x C-f ~/.emacs

Weitere Informationen im Emacs Wiki

sverrejoh
quelle
11
Klicken Sie anschließend auf Datei> Datei öffnen ... oder Speichern unter ..., um zu sehen, wo sich ~ / in einem vertrauten Windows-Dialogfeld zum Öffnen befindet.
Yoo
21

Auf meiner Vista-Box ist es in C:\Users\<USER>\AppData\Roaming\

Alexander Kojevnikov
quelle
1
Gleiches gilt für Windows 8.1 (Emacs 24) mit einer Ausnahme. Wenn Emacs über den Windows Explorer, einen Link oder eine Cmd-Konsole geöffnet wird, wird die Profildatei C: \ Users \ <BENUTZER> \ AppData \ Roaming \ .emacs verwendet. Wenn Sie Emacs jedoch über die PowerShell-Konsole öffnen, sucht Emacs in C. nach der .emacs-Datei : \ Users \ <USER> Ordner.
Kri
Das hat bei mir funktioniert. Ich habe eine .emacs-Datei im Roaming-Verzeichnis in AppData erstellt und funktioniert wie ein Zauber! Windows 10.
Retro Gamer
Arbeitete in Windows 10
Alex Kaszynski
6

Beachten Sie, dass es möglicherweise NICHT ausreicht, nur Ctrl-x Ctrl-f ~/.emacsdie Datei einzugeben und zu erstellen.

Es kann sein, dass Ihre Emacs-Anwendung einen anderen Ort zum Speichern Ihrer Init-Datei verwendet. Wenn dies der Fall ist, wird beim Erstellen der Datei ~ / .emacs einfach eine nutzlose Datei erstellt, die Ihre Emacs-Anwendung ignoriert.

Möglicherweise möchten Sie auch mehr als nur auf die .emacs-Init-Datei zugreifen , aber Sie möchten möglicherweise wissen, wo sich der Pfadname befindet.

Um dies zu erreichen, gibt es zwei Methoden:

Einfacher Weg: Geben Sie Ctrl+ H Vuser-init-file einReturn

Etwas kniffliger: Sie können herausfinden, wo Ihr System seine eigene .emacs-Datei speichert, indem Sie:

  1. Klicken Sie auf Optionen und scrollen Sie nach unten zu "Standardschriftart festlegen ...".
  2. Ändern Sie die Schriftarteinstellung und klicken Sie auf OK
  3. Gehen Sie im Optionsmenü zu "Optionen speichern".
  4. Wenn die Optionen gespeichert sind, speichert das System seine .emacs-Datei, und Sie können den Dateipfad im Minibuffer am unteren Rand des Emacs-Bildschirms lesen
user3020269
quelle
Informationen zum Formatieren Ihrer Antwort finden Sie in den Dokumenten. Es ist ganz einfach und bringt Ihnen mehr Ansehen.
Bhavik Shah
Als ich eine Datei mit dem Namen ~ / .emacs.el gespeichert habe, wurde sie in erstellt c:/Users/user1/AppData/Roaming/.emacs.el. Diese Seite emacswiki.org/emacs/DotEmacsDotD half mir zu erkennen, dass ich die Datei benennen musste, ~/.emacs.d/init.elwas bedeutete, dass sich die Datei im Dateisystem befand c:\Users\user1\AppData\Roaming\.emacs.d\init.el(überhaupt nicht das, was ich erwartet hatte). Ich ziehe es vor, die Umgebungsvariable HOME festzulegen und die Datei in meinem %USERPROFILE%Verzeichnis abzulegen, das unter Windows das logische HOME-Verzeichnis ist (zumindest soweit es mich betrifft).
PatS
4

Geben Sie init.elin Windows 7 Ihre Datei ein C:\Users\user-name\AppData\Roaming\.emacs.d\, wobei der Benutzername Ihr Benutzer- / Anmeldeordner ist.

Achten Sie darauf, dass Ihre init.elDatei nicht benannt wird init.el.txt. Dies ist etwas, was Windows tut, wenn Sie Ihre Datei mit einem Editor wie Notepad erstellen.

Caisah
quelle
4

Bei Versionen von Emacs unter Windows über 22 scheint es verschoben worden zu sein

~/.emacs.d/init.el

, ~Der Wert Ihrer Umgebungsvariable HOME ist (siehe Systemsteuerung → System - → ErweitertUmgebungsvariablen ).

Die Datei selbst ist möglicherweise nicht vorhanden. In diesem Fall erstellen Sie es einfach.

Gauthier
quelle
3

Sie müssen eine Emacs-Initialisierungsdatei erstellen. Einer wird nicht automatisch erstellt. Ich hatte ein ähnliches Problem und diese Antwort zeigt, was ich getan habe.

Mein Problem war, dass meine ~/.emacs.elDatei nicht geladen wurde. Seltsam, weil das bei mir immer funktioniert hat.

Diese Frage / Antwort hat mir geholfen, aber ich musste meine Init-Datei in die ablegen, %USERPROFILE%\AppData\Roaming\.emacs.d\init.elda dies anscheinend das Standardverhalten unter Windows ist.

Um dies zu beheben, habe ich Folgendes im Emacs * Scratch * -Puffer ausgeführt.

user-emacs-directory
"~/.emacs.d/"

Als ich sah , user-emacs-directorywar ~/.emacs.d, zog ich einfach meine .emacs.el - Datei %USERPROFILE%\.emacs.d\init.el. Aber das hat immer noch nicht funktioniert. Ich fuhr fort expand-file-namewie unten gezeigt:

(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"

Ich muss lieben, wie Windows funktioniert. (nicht) Also habe ich meine emacs.elDatei in die verschoben %USERPROFILE%\AppData\Roaming\.emacs.d\init.elund das hat funktioniert. Die Datei wurde jetzt gelesen. Ich habe jedoch andere Fehler erhalten, weil meine Initialisierungsdatei andere (persönliche Emacs) Dateien geladen hat (in ~/myenv/emacs/*.el.

Warning (initialization): An error occurred while loading c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:

Hum ... Scheint, als ~/myenv/emacs/*.elmüssten alle meine Dateien verschoben werden, damit dies funktioniert, aber das wollte ich nicht. Dann wurde mir klar, dass emacs sein Standardverhalten ausführt , da die Umgebungsvariable HOME nicht festgelegt wurde .

LÖSUNG

Nachdem ich meine Windows- HOMEUmgebungsvariable auf " %USERPROFILE%Alles" gesetzt hatte, funktionierte alles wie in den letzten 25 Jahren. :-)

Um die Umgebungsvariable HOME gesetzt, tippte ich WindowsKey + „bearbeiten Umgebungsvariablen für Ihr Konto“ zu öffnen und die Umgebungsvariablen im Dialogfeld und eingegeben HOME=%USERPROFILE%.

Jetzt ist meine Emacs-Initialisierungsdatei .emacs.el wieder an ihrem richtigen Platz $HOME/.emacs.elund nicht in%USERPROFILE%\AppData\Roaming\.emacs.d\init.el

Um fair zu sein, wenn Windows nur einen Ort hätte, an dem Dateien für vom Benutzer installierte Pakete abgelegt werden %USERPROFILE\AppData\Roamingkönnten, wäre die Lösung, HOME = zu erstellen, möglicherweise akzeptabel. Da jedoch einige Anwendungen verwenden %USERPROFILE%, andere verwenden %USERPROFILE\AppData\Roamingund andere verwenden, ist %USERPROFILE\AppData\Locales nur schwierig zu wissen, wo sich Ihre Konfiguration befindet Dateien.

Ich bevorzuge es, alles in meinem Verzeichnis% USERPROFILE% oder $ HOME zu haben.

Eine andere ähnliche Frage war hier:

PatS
quelle
"Ich muss lieben, wie Windows funktioniert. (Nicht)" - Dieses Problem hat nichts mit Windows zu tun, außer dem, was Emacs-Entwickler mit Leuten gemacht haben, die Emacs unter Windows ausführen.
Chris Charabaruk
2

Wie Kanja antwortete, wird der Pfad zu dieser Datei in der user-init-fileVariablen gespeichert (oder wenn keine Init-Datei vorhanden ist, enthält die Variable den Standardwert für die Erstellung).

Also unabhängig davon , welche der möglichen init Dateinamen , die Sie verwenden, und welches Verzeichnis es in ist, sollten Sie in der Lage sein , Ihre init - Datei zu besuchen mit:

M-: (find-file user-init-file) RET

Oder zeigen Sie den vollständigen Pfad im Echo-Bereich mit:

M-: (expand-file-name user-init-file) RET

Phils
quelle
2

Unter Emacs 23 und Windows 7 funktioniert es nur, wenn Sie Folgendes festlegen:

HKCU\SOFTWARE\GNU\Emacs\HOME
Ex_
quelle
Endlich habe ich das gefunden! Vielen Dank!
Chris
Endlich habe ich das gefunden! Ich auch!
Unterschlüssel
Mit "setzen" meinen Sie das Erstellen dieses Schlüssels (ohne Inhalt)?
Peter Mortensen
1

Ich habe festgestellt, dass Emacs 22 gelegentlich entweder "C: \ Dokumente und Einstellungen \ Benutzername \ Anwendungsdaten \ .emacs" oder nur "C: \ Dokumente und Einstellungen \ Benutzername \ .emacs" auf meinem XP-Computer öffnet. Ich habe keine Erklärung dafür gefunden, warum es gelegentlich seine Meinung ändert.

~ zeigt immer auf das, was die aktuelle Instanz von emacs für HOME hält, aber Kanjas Tipp (Ch v user-init-file) sagt Ihnen immer, was ~ / .emacs tatsächlich zugeordnet ist.

Remcycles
quelle
2
Ich habe jetzt festgestellt , dass Windows die eingestellt werden HOMEUmgebungsvariable unterschiedlich, je nachdem , wie ich anfangen runemacs.exe. Wenn ich es im Explorer starte, HOMEist es auf gesetzt C:\Documents and Settings\username, aber wenn ich es über das Startmenü starte, HOMEist C:\Documents and Settings\username\Application Data. Seltsam.
Remcycles
1

Unter Windows XP ist es:

C:\Documents and Settings\yourusernamehere\Application Data\
Eisbär
quelle
0

Wenn Emacs unter Windows 8.1 über Windows Explorer , eine Verknüpfung oder über die Cmd- Konsole gestartet wird, wird die Init-Datei C: \ Users \ <USER> \ AppData \ Roaming.emacs verwendet. Wenn ich Emacs von PowerShell aus starte, sucht Emacs im Ordner C: \ Users \ <USER> nach seiner Init-Datei . Die Lösung für dieses Problem bestand darin, die Benutzerumgebungsvariable HOME (Systemsteuerung \ System und Sicherheit \ System-> Erweiterte Systemeinstellungen-> Erweitert-> Umgebungsvariablen) auf C: \ Benutzer \ <BENUTZER> zu setzen . Nach dieser Änderung wird unabhängig davon, wie ich Emacs starte, dieselbe Init-Datei verwendet (siehe die akzeptierte Antwort auf diese Frage ).

kri
quelle
0

Für Windows 7 & Emacs26.3:


Wenn die HOMEUmgebung festgelegt ist, .emacssollte sich die Datei in diesem Ordner befinden.

Andernfalls sollte es in sein c:\.


In beiden Fällen sollte verwendet werden, wenn dies .emacsnicht der _emacsFall ist.

Dies liegt daran, dass wir keine .emacsDatei gemäß den Windows-Dateinamenregeln erstellen können (aber wir können sie von einer anderen Stelle herunterladen oder kopieren).

ZhaoGang
quelle