Ci sono dei vantaggi nell'usare ~ / .emacs.d / init.el invece di ~ / .emacs?


108

Normalmente ho usato il ~/.emacsmio file di configurazione, ma ho notato che altri lo usano ~/.emacs.d/init.el. Ci sono vantaggi per la init.elposizione? Eventuali svantaggi?


4
Emacs (o almeno alcune versioni di emacs) scrivono automaticamente cose su .emacs.
Vivi,

4
@Vivi A meno che tu non stia parlando di versioni molto vecchie, Emacs scrive le cose user-init-file. Questo sarà .emacsse tu avessi già avuto un .emacs, e init.else lo hai usato invece.
Radon Rosborough,

Le persone si sono concentrate sui vantaggi di ~/.emacs.d/init.eltrascurare gli svantaggi. Risponderò a quella parte: non ha affatto svantaggi!
Omar,

Tangenzialmente, a partire dalla versione 27.1 Emacs preferirà il percorso di configurazione XDG ~/.config/emacs/rispetto a ~/.emacs.d/. IIUC, se il primo esiste , il secondo non verrà esaminato.
phils,

Risposte:


103

Si ci sono. Citando il lunaryorn su Reddit :

  • Mantiene la $HOMEdirectory ordinata, perché tutti i file di Emacs sono contenuti ordinatamente in una singola directory. Per lo stesso motivo, tutti i moderni pacchetti Emacs scrivono le loro cache, storie, ecc ~/.emacs.d/.

  • Semplifica il controllo della versione, specialmente se dividi init.el in file diversi in ~/.emacs.d. Puoi semplicemente eseguire il commit init.elcome ogni altro file e git clone /my/emacs/config.git ~/.emacs.dsu un nuovo sistema ti dà tutta la configurazione di Emacs, senza dover collegare un file $HOME.


3
Come semplifica il controllo della versione? Puoi dividere il tuo file init senza usare .emacs.d.
Gilles,

3
Non semplifica il controllo della versione se hai solo file .emacs, ma se hai altri file emacs in .emacs.d, lo fa. Ad esempio customsalva i file in .emacs.d e se mantieni init.el nella loro versione di emacs controllata dalla tua versione, i file si trovano in una directory.
Ted Roden,

4
Versando completamente la tua directory .emacs.d /, puoi anche tenere sotto controllo della versione i pacchetti che installi tramite pacchetti.el (ELPA, MELPA ...). Ciò semplifica la condivisione della configurazione tra più computer e il rilevamento di una regressione nella configurazione (traccia le dipendenze). Il lato negativo è che crea un repository piuttosto pesante.
tuxella,

11
I sistemi di controllo della versione non eseguono la versione di un solo file: vogliono eseguire la versione di una cartella. Quindi versione ~/e aggiungi solo il tuo .emacs. Ma ora, devi assicurarti di non eseguire il commit di nessun altro file, quindi .hgignore o .gitignore in ogni altro file ~/. Ma ora non puoi tenere traccia di nessun altro file ~/, come ~/.bashrco ~/.bash_aliases.
zck,


37

Un ulteriore vantaggio: se tutto è presente .emacs.d, puoi mantenere la tua configurazione Emacs su Dropbox (o un'alternativa) e collegare in modo simbolico l'intera configurazione alla tua home directory. Ciò rende banale la sincronizzazione tra computer.


25

Se tutto ciò di cui hai bisogno per configurare Emacs come preferisci è un file init, non fa differenza se è ~/.emacso ~/.emacs.d/init.el. Ma ha senso creare una directory nel momento in cui inizi a dividere il tuo file init, o ad aggiungere configurazioni correlate a Emacs, ad esempio un file Cask. Inoltre, è il luogo in cui salverai il file con le definizioni abbrev, il file per le opzioni personalizzate ( M-x customize), ecc.

Tieni tutto ben nascosto ~/.emacs.d.


6

Emacs 27 introdurrà un nuovo file di inizializzazione early-init-filesotto user-emacs-directory, in particolare all'indirizzo ~/.emacs.d/early-init.el. Quindi un ulteriore vantaggio dell'uso ~/.emacs.d/init.elinvece di ~/.emacsfor user-init-fileè che il primo posizionerà entrambi i file di inizializzazione sotto lo stesso tetto, per coerenza.

Fino al rilascio di Emacs 27, è possibile trovare la documentazione per questa nuova funzionalità nei seguenti file dell'albero dei sorgenti di Emacs:


2

Non sono sicuro che questo faccia davvero la differenza in termini di velocità, ma puoi compilare byte la tua configurazione più facilmente se la tua configurazione è .emacs.d/init.el(cioè crea .emacs.d/init.elc)


1
Si noti che ~/.emacs.elè anche un nome file init valido.
phils,

1

Si utilizza ~/.emacs.d/init.ele si collega semplicemente il file a quel file ~/.emacs, nel caso in cui altri programmi / plugin si aspettino di trovare .emacs.

Su un sistema macOS o GNU / Linux, il comando sarebbe:

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

In questo modo ottieni tutti i vantaggi di VC della tua ~/emacs.dstruttura di directory e sarai in grado di usare un nome più corto quando devi modificare il file init.el ~/.emacsinvece di digitare ~/emacs.d/init.el👍


Cosa sono questi "altri programmi / plugin" misteriosi che "si aspettano di trovare .emacs"? Non penso sia una vera preoccupazione.
phils,

1
Un esempio potrebbe essere Quicklisp, se si esegue un (ql: add-to-init-file), il valore predefinito è ~ / .emacs
cseder

Che curioso. Direi che tali casi giustificherebbero segnalazioni di bug - Emacs ha supportato una varietà di nomi di file init per un tempo estremamente lungo e la sequenza di priorità è chiaramente documentata, quindi non ci sono buoni motivi per cui altri programmi non riescano a farlo bene . Non stavo anticipando un vero esempio, però :) Saluti.
phils,
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.