¿Hay alguna ventaja en usar ~ / .emacs.d / init.el en lugar de ~ / .emacs?
108
Normalmente lo he usado ~/.emacspara mi archivo de configuración, pero he notado que otros lo están usando ~/.emacs.d/init.el. ¿Hay ventajas en la init.elubicación? ¿Alguna desventaja?
Emacs (o al menos algunas versiones de emacs) escriben cosas en .emacs automáticamente.
Vivi
44
@Vivi A menos que estés hablando de versiones muy antiguas, Emacs escribe cosas en ellas user-init-file. Esto será .emacssi ya tenía un .emacs, y init.elsi lo usó en su lugar.
Radon Rosborough
La gente se centró en las ventajas de ~/.emacs.d/init.eldescuidar las desventajas. Contestaré esa parte: ¡no tiene desventajas en absoluto!
Omar
Tangencialmente, a partir de la versión de lanzamiento 27.1, Emacs preferirá la ruta de configuración XDG ~/.config/emacs/sobre ~/.emacs.d/. IIUC, si lo primero existe , lo último no será considerado.
Mantiene el $HOMEdirectorio ordenado, porque todos los archivos de Emacs están perfectamente contenidos en un solo directorio. Por la misma razón, todos los paquetes de Emacs modernos escriben sus cachés, historiales, etc. dentro ~/.emacs.d/.
Facilita el control de versiones, especialmente si divide su init.el en diferentes archivos ~/.emacs.d. Puede comprometerse init.elcomo cualquier otro archivo, y git clone /my/emacs/config.git ~/.emacs.den un nuevo sistema le ofrece toda su configuración de Emacs, sin tener que vincular un archivo $HOME.
¿Cómo facilita el control de versiones? Puede dividir su archivo de inicio sin usar .emacs.d.
Gilles
3
No facilita el control de versiones si solo tiene un archivo .emacs, pero si tiene otros archivos emacs en .emacs.d, lo tiene. Por ejemplo, customguarda archivos en .emacs.d y si mantiene init.el en todos sus archivos controlados por versión de emacs están en un directorio.
Ted Roden
44
Al versionar su directorio .emacs.d / por completo, también puede mantener bajo control de versión los paquetes que instala a través de packages.el (ELPA, MELPA ...). Esto hace que sea más fácil compartir su configuración entre varias computadoras y encontrar dónde se introdujo una regresión en su configuración (realiza un seguimiento de sus dependencias). El lado malo es que hace un repositorio bastante pesado.
tuxella
11
Los sistemas de control de versiones no versionan solo un archivo, quieren versionar una carpeta. Entonces tu versión ~/, y agrega solo tu .emacs. Pero ahora, debe asegurarse de no confirmar ningún otro archivo, por lo que .hgignore o .gitignore cada otro archivo ~/. Pero ahora no puede rastrear ningún otro archivo en ~/, como ~/.bashrco ~/.bash_aliases.
Una ventaja adicional: si todo está dentro .emacs.d, puede mantener su configuración de Emacs en Dropbox (o una alternativa) y vincular toda la configuración a su directorio de inicio. Eso hace que la sincronización entre computadoras sea trivial.
Si todo lo que necesita para configurar Emacs de la manera que desee es un archivo de inicio, no hay diferencia si es ~/.emacso ~/.emacs.d/init.el. Pero tiene sentido crear un directorio en el momento en que comienza a dividir su archivo de inicio, o agregar configuraciones relacionadas con Emacs, un archivo Cask, por ejemplo. Además, es el lugar donde guardará el archivo con definiciones abreviadas, el archivo de opciones personalizadas ( M-x customize), etc.
Emacs 27 presentará un nuevo archivo de inicialización early-init-fileen user-emacs-directory, a saber, en ~/.emacs.d/early-init.el. Por lo tanto, un beneficio adicional de usar en ~/.emacs.d/init.ellugar de ~/.emacsfor user-init-filees que el primero colocará ambos archivos de inicialización bajo el mismo techo, para mayor consistencia.
Hasta que se lance Emacs 27, puede encontrar la documentación de esta nueva característica en los siguientes archivos del árbol de fuentes de Emacs:
No estoy seguro si esto realmente hace una diferencia en términos de velocidad, pero puede compilar byte su configuración más fácilmente si su configuración está en .emacs.d/init.el(es decir, crear .emacs.d/init.elc)
Tenga en cuenta que ~/.emacs.eltambién es un nombre de archivo init válido.
Phil
1
Usted usa ~/.emacs.d/init.ely simplemente hace un enlace simbólico a ese archivo ~/.emacs, en caso de que otros programas / complementos esperen encontrar .emacs.
En un sistema macOS o GNU / Linux, el comando sería:
ln -s ~/.emacs.d/init.el ~/.emacs
De esta forma, obtiene todos los beneficios de VC de su ~/emacs.destructura de directorio y podrá usar un nombre más corto cuando necesite editar el archivo init.el en ~/.emacslugar de escribir ~/emacs.d/init.el👍
¿Cuáles son estos misteriosos "otros programas / complementos" que "esperan encontrar .emacs"? No creo que sea una preocupación real.
Phil
1
Un ejemplo podría ser Quicklisp, si hace un (ql: add-to-init-file), su valor predeterminado es ~ / .emacs
cseder
Que curioso Diría que cualquier caso de este tipo garantizaría informes de errores: Emacs ha admitido una variedad de nombres de archivos de inicio durante un tiempo extremadamente largo, y la secuencia de prioridad está claramente documentada, por lo que no hay una buena razón para que otros programas no lo hagan bien . Sin embargo, no esperaba un ejemplo real :) Saludos.
user-init-file
. Esto será.emacs
si ya tenía un.emacs
, yinit.el
si lo usó en su lugar.~/.emacs.d/init.el
descuidar las desventajas. Contestaré esa parte: ¡no tiene desventajas en absoluto!~/.config/emacs/
sobre~/.emacs.d/
. IIUC, si lo primero existe , lo último no será considerado.Respuestas:
Sí hay. Citando a lunaryorn en Reddit :
fuente
.emacs.d
.custom
guarda archivos en .emacs.d y si mantiene init.el en todos sus archivos controlados por versión de emacs están en un directorio.~/
, y agrega solo tu.emacs
. Pero ahora, debe asegurarse de no confirmar ningún otro archivo, por lo que .hgignore o .gitignore cada otro archivo~/
. Pero ahora no puede rastrear ningún otro archivo en~/
, como~/.bashrc
o~/.bash_aliases
.Una ventaja adicional: si todo está dentro
.emacs.d
, puede mantener su configuración de Emacs en Dropbox (o una alternativa) y vincular toda la configuración a su directorio de inicio. Eso hace que la sincronización entre computadoras sea trivial.fuente
Si todo lo que necesita para configurar Emacs de la manera que desee es un archivo de inicio, no hay diferencia si es
~/.emacs
o~/.emacs.d/init.el
. Pero tiene sentido crear un directorio en el momento en que comienza a dividir su archivo de inicio, o agregar configuraciones relacionadas con Emacs, un archivo Cask, por ejemplo. Además, es el lugar donde guardará el archivo con definiciones abreviadas, el archivo de opciones personalizadas (M-x customize
), etc.Mantenga todo perfectamente guardado
~/.emacs.d
.fuente
Emacs 27 presentará un nuevo archivo de inicialización
early-init-file
enuser-emacs-directory
, a saber, en~/.emacs.d/early-init.el
. Por lo tanto, un beneficio adicional de usar en~/.emacs.d/init.el
lugar de~/.emacs
foruser-init-file
es que el primero colocará ambos archivos de inicialización bajo el mismo techo, para mayor consistencia.Hasta que se lance Emacs 27, puede encontrar la documentación de esta nueva característica en los siguientes archivos del árbol de fuentes de Emacs:
etc/NEWS
doc/emacs/custom.texi
nodo(emacs) Early Init File
fuente
No estoy seguro si esto realmente hace una diferencia en términos de velocidad, pero puede compilar byte su configuración más fácilmente si su configuración está en
.emacs.d/init.el
(es decir, crear.emacs.d/init.elc
)fuente
~/.emacs.el
también es un nombre de archivo init válido.Usted usa
~/.emacs.d/init.el
y simplemente hace un enlace simbólico a ese archivo~/.emacs
, en caso de que otros programas / complementos esperen encontrar .emacs.En un sistema macOS o GNU / Linux, el comando sería:
De esta forma, obtiene todos los beneficios de VC de su
~/emacs.d
estructura de directorio y podrá usar un nombre más corto cuando necesite editar el archivo init.el en~/.emacs
lugar de escribir~/emacs.d/init.el
👍fuente