〜/ .emacsの代わりに〜/ .emacs.d / init.elを使用する利点はありますか?


108

通常~/.emacs、構成ファイルに使用しましたが、他のユーザーがを使用していることに気付きました~/.emacs.d/init.elinit.el場所に利点はありますか?欠点はありますか?


4
Emacs(または少なくともいくつかのemacsのバージョン)は、.emacsに自動的に書き込みます。
ビビ

4
@Vivi非常に古いバージョンについて話していない限り、Emacsはに物事を書き込みますuser-init-file。これは、.emacs既にを持っている場合.emacs、およびinit.el代わりにそれを使用した場合になります。
ラドンロズバラ

人々は~/.emacs.d/init.el、欠点を無視する利点に焦点を合わせました。私はその部分に答えます:それは全く欠点がありません!
オマー

接線方向では、リリースバージョン27.1以降、EmacsはXDGの設定パス~/.config/emacs/を優先し~/.emacs.d/ます。IIUC、前者が存在する場合、後者は見られません。
phils

回答:


103

はい、あります。Redditでlunaryornを引用:

  • $HOMEEmacsのすべてのファイルが1つのディレクトリにきちんと含まれているため、ディレクトリが整理された状態に保たれます。同じ理由で、最新のEmacsパッケージはすべて、キャッシュ、履歴などをに書き込みます~/.emacs.d/

  • 特にinit.elをで異なるファイルに分割する場合、バージョン管理が簡単になります~/.emacs.dinit.el他のすべてのファイルと同じようにコミットすることができgit clone /my/emacs/config.git ~/.emacs.d、新しいシステムでは、ファイルをにリンクする必要なく、Emacsのすべての設定が提供され$HOMEます。


3
バージョン管理を簡単にする方法は?を使用せずにinitファイルを分割できます.emacs.d
ジル14

3
.emacsファイルしかない場合はバージョン管理が簡単になりませんが、.emacs.dに他のemacsファイルがある場合はバージョン管理します。たとえば、customファイルを.emacs.dに保存し、init.elをバージョン管理下に置いた場合、すべてのバージョン管理されたemacsファイルは1つのディレクトリにあります。
テッドローデン14

4
.emacs.d /ディレクトリを完全にバージョン管理することにより、packages.el(ELPA、MELPA…)でインストールしたパッケージをバージョン管理下に置くこともできます。これにより、複数のコンピューター間で構成を共有し、構成内で回帰が導入された場所を見つけやすくなります(依存関係を追跡します)。悪い面は、かなり重いリポジトリになることです。
tuxella 14

11
バージョン管理システムは、ファイルを1つだけバージョン管理するのではなく、フォルダーをバージョン管理する必要があります。だから、あなたのバージョン~/、そしてあなたの.emacs。しかし、今は、他のファイルをコミットしないことを確認する必要があります。そのため、内の他のすべてのファイルを.hgignoreまたは.gitignoreします~/。しかし、今、あなたは内の他のファイルを追跡することができない~/、などの~/.bashrc~/.bash_aliases
ZCK


37

もう1つの利点:すべてが入っている場合.emacs.d、Emacsの構成をDropbox(または代替)に保持し、構成全体をホームディレクトリにシンボリックリンクできます。これにより、コンピューター間の同期は簡単になります。


25

Emacsをお好みの方法で設定する必要があるのがinitファイルだけである場合、~/.emacsまたはの場合は違いはありません~/.emacs.d/init.el。しかし、initファイルを分割したり、Emacs関連の構成(Caskファイルなど)を追加したりしたときに、ディレクトリを作成することは理にかなっています。また、略語の定義、カスタムオプション(M-x customize)などのファイルを保存する場所でもあります。

すべてをきちんとはめ込み~/.emacs.dます。


6

Emacs 27は、新しい初期化ファイルearly-init-fileuser-emacs-directory、つまりに導入し~/.emacs.d/early-init.elます。したがって、forの~/.emacs.d/init.el代わりに使用することのさらなる利点は、前者が一貫性のために両方の初期化ファイルを同じ屋根の下に置くことです。~/.emacsuser-init-file

Emacs 27がリリースされるまで、この新しい機能のドキュメントはEmacsソースツリーの次のファイルにあります。



1

他のプログラム/プラグインが.emacsを見つけることを期待する場合に備え~/.emacs.d/init.el~/.emacs、そのファイルを使用し、シンボリックリンクします。

macOSまたはGNU / Linuxシステムでは、コマンドは次のようになります。

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

これにより、~/emacs.dディレクトリ構造のVCのすべての利点が得られ、👍 ~/.emacsを入力する代わりにinit.elファイルを編集する必要がある場合に短い名前を使用できるようになります。~/emacs.d/init.el


「.emacsを見つけることを期待する」これらの不可解な「他のプログラム/プラグイン」とは何ですか?私はそれが本当の懸念だとは思わない。
phils

1
一例として
Quicklispがあり

なんて好奇心が強い。そのような場合はバグ報告が必要だと思います-Emacsは非常に長い間さまざまなinitファイル名をサポートしており、優先順位は明確に文書化されているため、他のプログラムがそのようにならない理由はありません。しかし、実際の例はまったく予想していませんでした。
phils
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.