~ / .emacs 대신 ~ / .emacs.d / init.el을 사용하면 어떤 이점이 있습니까?


108

일반적으로 ~/.emacs구성 파일에 사용했지만 다른 사용자가을 사용하는 것을 보았습니다 ~/.emacs.d/init.el. init.el위치에 장점이 있습니까? 단점이 있습니까?


4
Emacs (또는 최소한 일부 emacs 버전)는 .emacs에 자동으로 내용을 씁니다.
Vivi

4
@Vivi 이전 버전에 대해 이야기하지 않는 한 Emacs는에 내용을 씁니다 user-init-file. 이 될 것입니다 .emacs당신은 이미이 있다면 .emacs, 그리고 init.el경우 대신 것을 사용했다.
Radon Rosborough

사람들 ~/.emacs.d/init.el은 단점 을 무시하는 장점에 초점을 맞췄습니다 . 나는 그 부분에 대답 할 것이다 : 그것은 전혀 단점이 없다!
Omar

접선으로 릴리스 버전 27.1부터 Emacs는 XDG 구성 경로 ~/.config/emacs/보다 선호합니다 ~/.emacs.d/. IIUC는 전자 가 존재한다면 후자를 보지 않을 것이다.

답변:


103

네, 있습니다. Reddit에서 lunaryorn 인용 :

  • $HOME모든 Emacs의 파일이 하나의 디렉토리에 깔끔하게 포함되어 있기 때문에 디렉토리를 깔끔하게 유지합니다 . 같은 이유로 모든 최신 Emacs 패키지는 캐시, 히스토리 등을에 기록 ~/.emacs.d/합니다.

  • 특히 init.el을에서 다른 파일로 분할 할 경우 버전 관리가 더 쉬워집니다 ~/.emacs.d. init.el다른 모든 파일과 마찬가지로 커밋 할 수 git clone /my/emacs/config.git ~/.emacs.d있으며 새 시스템에서는 파일을에 링크하지 않고도 모든 Emacs 구성을 제공합니다 $HOME.


3
버전 관리가 더 쉬워 집니까? 를 사용하지 않고 init 파일을 분할 할 수 있습니다 .emacs.d.
Gilles

3
.emacs 파일 만 있으면 버전을 쉽게 제어 할 수 없지만 .emacs.d에 다른 emacs 파일이 있으면 버전 관리가 쉬워집니다. 예를 들어 custom파일을 .emacs.d에 저장하고 init.el을 모든 버전 제어 emacs 파일에 보관하면 하나의 디렉토리에 있습니다.
Ted Roden

4
.emacs.d / 디렉토리의 버전을 완전히 지정하면, packages.el (ELPA, MELPA…)을 통해 설치 한 패키지를 버전 제어 상태로 유지할 수도 있습니다. 이렇게하면 여러 컴퓨터간에 구성을보다 쉽게 ​​공유하고 구성에서 회귀가 발생한 위치를 찾을 수 있습니다 (종속성을 추적). 나쁜 점은 그것이 꽤 무거운 저장소를 만든다는 것입니다.
tuxella

11
버전 관리 시스템은 파일을 하나만 버전 화하지 않으며 폴더 버전을 지정하려고합니다. 따라서 버전을 지정하고을 ~/추가하십시오 .emacs. 그러나 이제 다른 파일을 커밋하지 않도록 확인해야합니다. 따라서 다른 모든 파일을 .hgignore 또는 .gitignore합니다 ~/. 그러나 지금 당신은 어떤 다른 파일을 추적 할 수 없습니다 ~/, 같은 ~/.bashrc~/.bash_aliases.
zck


37

한 가지 추가 장점 : 모든 것이에 있다면 .emacs.dDropbox (또는 대안)에 Emacs 구성을 유지하고 전체 구성을 홈 디렉토리에 심볼릭 링크 할 수 있습니다. 따라서 여러 컴퓨터에서 동기화하는 것이 간단합니다.


25

원하는 방식으로 Emacs를 설정해야하는 모든 파일이 init 파일 인 경우 ~/.emacs또는 파일의 경우 차이가 없습니다 ~/.emacs.d/init.el. 그러나 init 파일을 분할하거나 Cask 파일과 같은 Emacs 관련 구성을 추가하는 순간 디렉토리를 만드는 것이 좋습니다. 또한 abbrev 정의로 파일을 저장하는 위치, 사용자 지정 옵션 파일 ( M-x customize) 등입니다.

모든 것을 깔끔하게 유지하십시오 ~/.emacs.d.


6

Emacs 27은 에서 early-init-file아래 의 새 초기화 파일을 소개합니다 . for 대신에 사용 하는 것의 또 다른 이점 은 전자가 일관성을 위해 두 초기화 파일을 동일한 지붕 아래에 배치한다는 것입니다.user-emacs-directory~/.emacs.d/early-init.el~/.emacs.d/init.el~/.emacsuser-init-file

Emacs 27이 출시 될 때까지 다음 Emacs 소스 트리 파일에서이 새로운 기능에 대한 설명서를 찾을 수 있습니다.


2

이것이 실제로 속도면에서 차이를 일으키는 지 확실하지 않지만 구성이있는 경우 설정을 더 쉽게 바이트 컴파일 할 수 있습니다 .emacs.d/init.el(예 : create .emacs.d/init.elc)


1
참고 ~/.emacs.el또한 유효한 초기화 파일 이름입니다.
phils

1

다른 프로그램 / 플러그인이 .emacs를 찾을 것으로 예상되는 경우를 대비 ~/.emacs.d/init.el하여 해당 파일을 사용 하고 심볼릭 링크하십시오 ~/.emacs.

macOS 또는 GNU / Linux 시스템에서 명령은 다음과 같습니다.

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

이 방법 당신은 당신의 VC의 모든 혜택을 얻을 ~/emacs.d디렉토리 구조를 그리고 당신은 당신을 통해 init.el 파일을 편집해야 할 경우 짧은 이름을 사용하실 수 있습니다 ~/.emacs입력하는 대신 ~/emacs.d/init.el👍


".emacs를 찾을 것으로 예상되는"이 신비한 "다른 프로그램 / 플러그인"은 무엇입니까? 나는 그것이 진짜 관심사라고 생각하지 않습니다.

1
하나의 예는 Quicklisp 일 수 있습니다. (ql : add-to-init-file)을 수행하면 기본값은 ~ / .emacs
cseder

정말 궁금합니다. 이러한 경우에는 버그 보고서가 필요하다고 말하고 싶습니다 .Emacs는 다양한 init 파일 이름을 매우 오랫동안 지원했으며 우선 순위 순서가 명확하게 문서화되어 있기 때문에 다른 프로그램이 그 권리를 얻지 못할 이유가 없습니다. . 나는 실제적인 예를 전혀 기대하지 않았다. :) 건배.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.