Dove posso trovare il mio file .emacs per Emacs in esecuzione su Windows?


115

Ho provato a cercare il file .emacs per la mia installazione di Windows per Emacs, ma non sono riuscito a trovarlo. Ha lo stesso nome file in Windows e in Unix?

Devo crearlo da solo? In tal caso, in quale directory specifica si trova?

Risposte:


108

Copia e incolla dalle FAQ di Emacs, http://www.gnu.org/software/emacs/windows/ :

Dove metto il mio file init?

Su Windows, il .emacsfile può essere richiamato _emacsper compatibilità con i file system DOS e FAT in cui i nomi dei file non possono iniziare con un punto. Alcuni utenti preferiscono continuare a usare un nome simile, perché Windows Explorer non può creare un file con un nome che inizia con un punto, anche se il filesystem e la maggior parte degli altri programmi possono gestirlo. In Emacs 22 e versioni successive, può anche essere chiamato il file init .emacs.d/init.el. Molti degli altri file creati dai pacchetti Lisp sono ora memorizzati anche nella .emacs.ddirectory, quindi questo mantiene tutti i file relativi a Emacs in un unico posto.

Tutti i file menzionati sopra dovrebbero andare nella directory HOME. La directory HOME viene determinata seguendo i passaggi seguenti:

  1. Se la variabile d'ambiente HOME è impostata, usa la directory che indica.
  2. Se la voce di registro HKCU \ SOFTWARE \ GNU \ Emacs \ HOME è impostata, usa la directory che indica.
  3. Se la voce di registro HKLM \ SOFTWARE \ GNU \ Emacs \ HOME è impostata, usa la directory che indica. Non consigliato, poiché gli utenti condividono la stessa directory HOME.
  4. Se C:\.emacsesiste, usa C:/. Questo è per compatibilità con le versioni precedenti, poiché le versioni precedenti C:/erano predefinite se HOME non era impostato.
  5. Utilizzare la directory AppData dell'utente, di solito una directory denominata Application Data nella directory del profilo dell'utente, la cui posizione varia a seconda della versione di Windows e se il computer fa parte di un dominio.

All'interno di Emacs, ~all'inizio del nome di un file viene espanso nella directory HOME, così puoi sempre trovare il tuo file .emacs con C-x C-f ~/.emacs.

Ulteriori informazioni sono disponibili in HOME e nelle directory di avvio su MS-Windows .


1
Oppure potresti aver bisogno di trovare con Cx Cf ~ / _emacs (invece del punto). Usare il trattino basso per il tuo init è una pratica comune (e suggerita) sia per Vim che per Emacs.
labirinto

Emacs si lamenta del fatto che "_emacs" è deprecato :(
Brian Z

Grazie. Questa spiegazione in realtà mi ha aiutato a impostare correttamente emacs seguendo un tutorial di clojure, dove non ne hanno nemmeno parlato. Creata la variabile HOME su Windows e ora funziona.
Siniyas

Per me in riferimento al tuo punto 5 sopra, la directory che emacs mi sta cercando è C: \ Users \ userid \ AppData \ Roaming su Windows 7 ma ovviamente il mio computer è su un dominio.
user8128167

Su Windows 10 ho impostato la variabile HOME su% USERPROFILE% per evitare il suffisso AppData.
Bae

80

Dovrebbe essere memorizzato nella variabile user-init-file. Usa C-H v user-init-file RETper controllare. Puoi anche aprirlo direttamente usandoM-x eval-expression RET (find-file user-init-file) RET


8
Questo è così utile, sono sorpreso che non sia menzionato nella sezione del manuale sui file init.
Brian Z

Mi chiedo perché quando provo questo, ottengo trailing garbage following expression?
Marko Grdinic

Hai usato le parentesi?
Jose Romero

29

Apri il file in questo modo in Emacs per Windows:

C-x C-f ~/.emacs

Maggiori informazioni nel Wiki di Emacs


11
Quindi fai clic su File> Apri file ... o Salva con nome ... per vedere dove si trova ~ / in una familiare finestra di dialogo Apri di Windows.
Yoo

21

Sulla mia scatola di Vista è dentro C:\Users\<USER>\AppData\Roaming\


1
Lo stesso per Windows 8.1 (Emacs 24) con un'eccezione. Quando Emacs viene aperto da Windows Explorer, un collegamento o una console cmd utilizza il file di profilo C: \ Users \ <USER> \ AppData \ Roaming \ .emacs ma se apri Emacs dalla console PowerShell, Emacs cercherà il file .emacs in C : Cartella \ Users \ <USER>.
kri

Questo ha funzionato per me. Ho creato un file .emacs nella directory Roaming in AppData e funziona a meraviglia! Windows 10.
Retro Gamer

Ha lavorato in Windows 10
Alex Kaszynski il

6

Nota che potrebbe NON essere sufficiente digitare Ctrl-x Ctrl-f ~/.emacse creare il file.

È possibile che la tua applicazione Emacs utilizzi un posto diverso per memorizzare il tuo file init, e se è così, la creazione del file ~ / .emacs crea semplicemente un file inutile che la tua applicazione Emacs ignora.

Inoltre, potresti voler fare di più che accedere al file .emacs init, ma potresti voler sapere dove si trova, cioè il suo percorso.

Per arrivare a questo ci sono due metodi:

Modo semplice: digita Ctrl+ H Vuser-init-fileReturn

Modo leggermente più complicato: puoi scoprire dove il tuo sistema sta memorizzando il proprio file .emacs:

  1. Fai clic su opzioni e scorri verso il basso fino a "Imposta carattere predefinito ..."
  2. Modificare l'impostazione del carattere e fare clic su OK
  3. Nel menu delle opzioni, vai a "Salva opzioni"
  4. Quando le opzioni vengono salvate, il sistema salva il suo file .emacs e puoi leggere il percorso del file nel minibuffer in fondo alla schermata di Emacs

Si prega di fare riferimento alla documentazione sulla formattazione della risposta. È abbastanza facile e ti farà guadagnare più reputazione.
Bhavik Shah

Quando ho salvato un file denominato ~ / .emacs.el, è stato creato in formato c:/Users/user1/AppData/Roaming/.emacs.el. Questo sito emacswiki.org/emacs/DotEmacsDotD mi ha aiutato a capire che dovevo dare un nome al file, il ~/.emacs.d/init.elche significava che il file nel file system si trovava in c:\Users\user1\AppData\Roaming\.emacs.d\init.el(non è affatto quello che mi aspettavo). Preferisco impostare la variabile d'ambiente HOME e posizionare il file nella mia %USERPROFILE%directory che è la directory HOME logica su Windows (almeno per quanto mi riguarda).
PatS

4

In Windows 7 inserisci il tuo init.elfile C:\Users\user-name\AppData\Roaming\.emacs.d\, dove nome utente è la tua cartella utente / login.

Fai attenzione in modo che il tuo init.elfile non venga nominato init.el.txt. Questo è qualcosa che Windows fa se crei il tuo file con un editor come Blocco note.


4

Nelle versioni di Emacs su Windows sopra la 22, sembra che sia passato a

~/.emacs.d/init.el

, ~essendo il valore della tua variabile d'ambiente HOME (vedi Pannello di controllo → SistemaAvanzateVariabili d'ambiente ).

Il file stesso potrebbe non esistere. In tal caso, crealo.


3

Devi creare un file di inizializzazione di emacs. Uno non viene creato automaticamente. Ho avuto un problema simile e questa risposta rintraccia quello che ho fatto.

Il mio problema era che il mio ~/.emacs.elfile non veniva caricato. Strano perché questo ha sempre funzionato per me.

Questa domanda / risposta mi ha aiutato, ma ho dovuto inserire il mio file init in %USERPROFILE%\AppData\Roaming\.emacs.d\init.elperché questo è apparentemente il comportamento predefinito su Windows.

Per risolvere questo problema, ho eseguito quanto segue nel buffer emacs * scratch * .

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

Quando ho visto user-emacs-directoryera ~/.emacs.d, ho semplicemente spostato il mio file .emacs.el in %USERPROFILE%\.emacs.d\init.el. Ma questo ancora non ha funzionato. Ho continuato con expand-file-namecome mostrato di seguito:

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

Devo amare come funziona Windows. (non) Quindi ho spostato il mio emacs.elfile in %USERPROFILE%\AppData\Roaming\.emacs.d\init.ele ha funzionato. Il file era ora in fase di lettura. Ma ho ricevuto altri errori perché il mio file di inizializzazione caricava altri file (emacs personali) (in formato ~/myenv/emacs/*.el.

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

Hum ... Sembra che tutti i miei file ~/myenv/emacs/*.elavrebbero bisogno di essere spostati affinché funzionasse, ma non volevo farlo. Poi ho capito che poiché la variabile d'ambiente HOME non era impostata, emacs stava eseguendo il suo comportamento predefinito .

SOLUZIONE

Una volta impostata la HOMEvariabile di ambiente Windows su, %USERPROFILE%tutto ha iniziato a funzionare come negli ultimi 25 anni. :-)

Per impostare la variabile d'ambiente HOME, ho digitato WindowsKey + "modifica le variabili d'ambiente per il tuo account" per aprire la finestra di dialogo Variabili d' ambiente e ho inserito HOME=%USERPROFILE%.

Ora il mio file di inizializzazione di emacs .emacs.el è tornato al suo posto legittimo $HOME/.emacs.ele non in%USERPROFILE%\AppData\Roaming\.emacs.d\init.el

Per essere onesti, se Windows avesse un solo posto in cui mettere i file per i pacchetti installati dall'utente, la soluzione di creare HOME = %USERPROFILE\AppData\Roamingpotrebbe essere accettabile, ma poiché alcune applicazioni lo usano %USERPROFILE%, alcune lo usano %USERPROFILE\AppData\Roaminge altre lo usano %USERPROFILE\AppData\Localrende difficile sapere dove trovare la tua configurazione File.

Preferisco avere tutto nella mia directory% USERPROFILE% o $ HOME.

Un'altra domanda simile era qui:


"Devo amare come funziona Windows. (Non)" - Questo problema non ha niente a che fare con Windows se non questo è ciò che gli sviluppatori di Emacs hanno fatto alle persone che eseguono Emacs su Windows.
Chris Charabaruk

2

Come ha risposto kanja, il percorso di questo file è memorizzato nella user-init-filevariabile (o se non esiste alcun file init, la variabile contiene il valore predefinito per dove crearlo).

Quindi, indipendentemente da quale dei possibili nomi di file di inizializzazione stai utilizzando e in quale directory si trova, dovresti essere in grado di visitare il tuo file di inizializzazione con:

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

Oppure visualizza il suo percorso completo nell'area dell'eco con:

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


2

Su Emacs 23 e Windows 7 funziona solo se imposti:

HKCU\SOFTWARE\GNU\Emacs\HOME

Finalmente ho trovato questo! Grazie!
Chris

Finalmente ho trovato questo! Anch'io!
lowerkey

Con "set", intendi creare quella chiave (senza contenuto)?
Peter Mortensen

1

Ho scoperto che Emacs 22 occasionalmente aprirà "C: \ Documents and Settings \ username \ Application Data \ .emacs", o semplicemente "C: \ Documents and Settings \ nomeutente \ .emacs" sulla mia macchina XP. Non ho trovato una spiegazione del motivo per cui a volte cambia idea.

~ punterà sempre a qualunque cosa l'istanza corrente di emacs pensi sia HOME, ma il suggerimento di kanja (Ch v user-init-file) ti dirà sempre a cosa mappa effettivamente ~ / .emacs.


2
Ora ho notato che Windows imposterà la HOMEvariabile di ambiente in modo diverso, a seconda di come avvio runemacs.exe. Se lo avvio da Explorer, HOMEè impostato su C:\Documents and Settings\username, ma se lo avvio dal menu Start, HOMEè C:\Documents and Settings\username\Application Data. Strano.
remcycles

1

Su Windows XP è:

C:\Documents and Settings\yourusernamehere\Application Data\


0

Su Windows 8.1, se Emacs viene avviato da Windows Explorer , un collegamento o dalla console cmd utilizza il file di inizializzazione C: \ Users \ <USER> \ AppData \ Roaming.emacs . Quando avvio Emacs da PowerShell, Emacs cerca il suo file init nella cartella C: \ Users \ <USER> . La soluzione a questo problema consisteva nell'impostare la variabile di ambiente utente HOME (Pannello di controllo \ Sistema e sicurezza \ Sistema-> Impostazioni di sistema avanzate-> Avanzate-> Variabili di ambiente) su C: \ Users \ <USER> . Dopo questa modifica, indipendentemente da come avvio Emacs, utilizza lo stesso file di inizializzazione (vedere la risposta accettata a questa domanda )


0

Per Windows7 ed Emacs26.3 :


se l' HOMEambiente è impostato, il .emacsfile dovrebbe essere in quella cartella.

altrimenti, dovrebbe essere in c:\.


In entrambi i casi, se .emacsnon c'è, _emacsdovrebbe essere usato.

Questo perché non possiamo creare .emacsfile in base alle regole di denominazione dei file di Windows (ma possiamo scaricarlo o copiarlo da qualche altra parte).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.