Windows 7에서 dot emacs .emacs 파일의 다른 위치를 어떻게 설정합니까?


16

Windows 7 컴퓨터를 사용하고 있으며 관리자 액세스 권한이 없습니다. 따라서 도트 emacs 파일을 루트 디렉토리에 둘 수 없습니다. dot emacs 파일의 다른 위치를 지정할 수있는 방법이 있습니까?


Emacs 설치의 자신의 위치를 ​​제어 할 수 있다면 (예를 들어, 원하는 곳에 배치하거나 최소한 설치에 대한 쓰기 권한이있는 경우), site-start.el사용자 자신의로드 와 같은 것을 사용하여 완전히 제어 할 수 있으며 init.el더 이상 필요하지 않습니다 .emacs. 이 예에서는 컴퓨터의 다른 사람이 사용자의 작업에 영향을 줄 수있는 물건을 넣지 않는 한 홈 디렉토리를 사용하지 않아도됩니다. 즉, 비워 둘 수 있으므로 만질 필요가 없습니다.
법률 목록

답변:


4

Emacs에는 매뉴얼에 설명 된대로 init 파일을 찾는 여러 곳 이 있습니다 . Emacs를 사용자 정의하려면 해당 파일 중 하나로 시작해야합니다.

일반적인 방법은 파일을 사용하는 것입니다 init.el당신의 user-emacs-directory대신을 필요없이 .emacs홈 디렉토리.

user-emacs-directory디폴트는 ~/.emacs.d, 그래서 여전히 가정을 기준으로하지만,이 방법의 장점은 한 곳에서 이맥스 구성과 관련된 모든 것을 유지할 수있다. 해당 디렉토리는 버전 제어, 백업, 여러 머신간에 공유 될 수 있습니다 mklink. Windows 에서 symlink를 사용 하여 파일을 다른 위치에 유지할 수 있습니다.

예를 들어, 사람들이 Github에서 Emacs 구성을 유지하는 것을 보는 것이 일반적입니다. init.el 파일이있는 elisp 프로젝트를 Github에서 검색 하면이 예제를 많이 찾을 수 있습니다 .


나는이 솔루션을 좋아하고 그것을 사용하고 싶지만 여전히 내 변경 방법을 알려주지 않습니다user-emacs-directory
Startec

내 제안은 실제로 심볼릭 링크를 사용하는 것이 었습니다. 다른 답변에서 볼 수 있듯이 초기화 중에 Emacs가 읽는 표준 위치 중 하나에 무언가 를 넣어야 합니다.
glucas

수동 링크가 끊어졌습니다.
corvus_192

17

Emacs를 사용하는 모든 Windows 설치에서 .emacs나열된 위치 의 파일에 다음 코드가 있습니다.

;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)

이 방법 나는 나의 넣을 수 있습니다 .emacs그리고 .emacs.d/내가 원하는 어느 곳을.


거의 필요한 것만 감사합니다. 나는 default-directory와 sentenv HOME을 남겨두고 그렇지 않으면 setq를 설정해야했습니다!
그랜트 보 우먼

나는 Ryan의 대답을 시도했다. 그러나 이제는 AppData \ Roaming 폴더의 emacs 내 에서이 파일을 열 수 없습니다. 아직 50 점을 얻지 못했기 때문에 의견을 추가 할 수 없어서 실례합니다.
Sreekumar R

@SreekumarR 당신이 하나에 연결하는 대신에 "대답"를 게시, 새로운 질문을해야한다
앤드류 스완

@SreekumarR 새로운 질문이 있으시면 질문하기 버튼 을 클릭하여 질문하십시오 . 컨텍스트를 제공하는 데 도움이되는 경우이 질문에 대한 링크를 포함하십시오. - 리뷰에서
Stefan

5

.emacs 파일은 HOME디렉토리에 들어갑니다 . 로부터 이맥스 설명서 :

HOME에 해당하는 Windows는 사용자 별 응용 프로그램 데이터 디렉토리입니다. 실제 위치는 Windows 버전에 따라 다릅니다.

시스템의 임의의 디렉토리를 가리 키도록 환경 변수 HOME을 명시 적으로 설정하여이 기본값 인 HOME을 대체 할 수 있습니다. HOME은 명령 셸 프롬프트 나 '내 컴퓨터'의 '속성'대화 상자에서 설정할 수 있습니다. HOME은 시스템 레지스트리에서도 설정할 수 있습니다 (MS-Windows 레지스트리 참조).


1
예, 버전 관리상의 이유로 홈 디렉토리를 설정하는 방법을 알고 있습니다. 다른 디렉토리에서 읽도록 emacs를 설정할 수 있기를 원합니다 (emacs에 특정한 디렉토리를 가질 수 있도록)
Startec

3
이 해킹은 Emacs가 다른 것을 홈 디렉토리로 간주하게합니다.
wasamasa 2016 년

@wasamasa-나는 그것을 "핵"이라고 부르지 않을 것이다. 내 Emacs 25 빌드에서 환경 변수를 사용하여 "HOME"을 설정하지 않으면 Emacs 설치 디렉토리가 기본값으로 설정되는데 이는 매우 잘못된 것입니다. "HOME"은 사용자가 홈 디렉토리로 간주하는 것으로 설정해야하며 환경 변수를 설정하는 것이 표준 방법입니다. Unix 시스템에서는 일반적으로 로그인 프로세스 중에 사용자를 위해 이미 수행되었지만 Windows에서는 수동으로 수행해야합니다.
TED

요점은 일반적으로 HOME디렉토리를 심각 하게 다른 것으로 변경하는 것 입니다. 따라서 왜 그 변경을 핵이라고 부릅니다. 적절한 값으로 설정하는 것이 좋습니다.
wasamasa

2

당신은 말합니다 :

그러나 버전 제어를 위해 홈 디렉토리를 설정하는 방법을 알고 있는데 emacs가 다른 디렉토리에서 읽도록 설정할 수 있기를 원합니다 (따라서 emacs 고유의 디렉토리를 가질 수 있음) .

init 파일은 홈 디렉토리로 이동하여 어디든지 넣을 수 있습니다. 분명히 Emacs가로드하는 것들에 대해 다른 디렉토리를 원합니다. 그건 문제가되지 않습니다. init 파일을 홈 디렉토리에 넣고 해당 파일에 variable 값에 다른 디렉토리를 추가 load-path한 다음 사용하려는 다른 Emacs 라이브러리가 필요합니다. 해당 라이브러리를 다른 디렉토리에 넣으십시오.

init 파일에는로드하려는 Emacs 라이브러리를 유지하는 디렉토리 설정 외에는 아무것도 포함 할 필요가 없습니다.



0

(setq user-init-file "C:/path/to/.emacs")@ryan이 제안한 다른 줄을 site-start.el에 넣을 수 있다고 생각하십시오.

사이트에 사이트 시작 파일이있을 수도 있습니다. 존재하는 경우 site-start.el로 이름이 지정됩니다. default.el과 마찬가지로 Emacs는 Lisp 라이브러리의 표준 검색 경로를 통해이 파일을 찾습니다. Emacs는 init 파일을로드하기 전에이 라이브러리를로드합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.