Programing

.emacs를 변경 한 후 다시로드하려면 어떻게해야합니까?

lottogame 2020. 2. 29. 13:32
반응형

.emacs를 변경 한 후 다시로드하려면 어떻게해야합니까?


Emacs를 다시 .emacs시작하지 않고 업데이트 한 모든 정의를 Emacs에 다시로드하려면 어떻게해야 합니까?


load-file 명령을 사용할 수 있습니다 ( M-x load-file. return 키를 두 번 눌러 편집중인 현재 파일 인 기본 파일 이름을 사용하십시오).

포인트를 sexp의 끝으로 옮기고을 눌러 C-xC-e해당 sexp 만 실행할 수도 있습니다. 일반적으로 한두 줄만 변경하는 경우 전체 파일을 다시로드 할 필요는 없습니다.


매우 편리하다는 것이 매우 이상합니다.

M-x eval-buffer

여기에 언급되지 않았습니다.

그것은 당신 .emacs이 dem 등원 이라면 버퍼의 모든 코드, 가장 빠른 방법을 즉시 평가합니다 .


일반적으로 변경된 지역을 재평가 할 수 있습니다. 변경 한 ~ / .emacs의 영역을 표시 한 다음을 사용하십시오 M-x eval-region RET. 두 번로드 한 후에도 제대로 작동하지 않는 .emacs 파일을 작성하기 쉽기 때문에 전체 파일을 다시 평가하는 것보다 안전합니다.


현재 활성화 된 버퍼에서 .emacs 파일을 연 경우 :

MX 평가 버퍼

M-x load-file
~/.emacs

다음은 그렇게해야합니다 ...

M-x load-file

다른 사람들은 이미 언급 한대로 귀하의 질문에 대답했지만 일반적으로 방금 작성한 줄을 실행하고 싶습니다. 그것을 위해, CtrlAltxlisp에서 잘 작동합니다.


키보드 단축키:

(defun reload-init-file ()
  (interactive)
  (load-file user-init-file))

(global-set-key (kbd "C-c C-l") 'reload-init-file)    ; Reload .emacs file

해결책

M-: (load user-init-file)


노트

  • Eval:프롬프트에 입력하십시오 (괄호 포함).
  • user-init-file~/.emacs기본값으로 구성 파일 경로를 가리키는 값을 보유하는 변수입니다.
  • (load)더 짧고, 오래되고, 비대화 형 버전입니다 (load-file). emacs 명령이 아니고 M-x단순한 elisp 함수입니다.

결론

M-: > M-x


C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el

처음에는이 작업을 수행하지 않는 것이 좋습니다. 대신, 새 emacs 세션을 시작하고 변경 사항이 올바르게 작동하는지 확인하십시오. 이 방법을 사용하는 이유는 작동하지 않는 .emacs 파일이있는 상태에서로드하지 못하거나 완전히로드되지 않는 상태를 유지하기위한 것입니다. 원래 세션에서 모든 편집 작업을 수행하고 새 세션에서 모든 테스트를 수행하는 경우 항상 문제가되는 코드에 주석을 달 수있는 신뢰할만한 것이 있습니다.

변경 사항에 만족하면 다른 답변 중 하나를 사용하여 다시로드하십시오. 개인적으로 선호하는 것은 eval추가 / 변경 한 섹션에만 해당되며, 추가 / 변경된 코드 영역을 강조 표시하고을 호출하기 만하면 M-x eval-region됩니다. 그렇게하면 luapyad가 지적한대로 평가되는 코드가 최소화되어 의도하지 않은 부작용이 최소화됩니다.


현재 우분투 15.04에 있습니다. 나는 이것에 대한 열쇠를 정의하고 싶다.
[M-insert]는 키보드에서 alt-insert로 변환됩니다.
이것을 .emacs 파일에 넣으십시오.

(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))

init 파일에서 정의하고 Mx reload-user-init-file로 호출 하십시오.

(defun reload-user-init-file()
  (interactive)
  (load-file user-init-file))

M-x eval-buffer작동 하지만 토글 및 기타 유사한 문제가 발생할 수 있습니다. 더 나은 접근 방법은 .emacs의 새로운 내용을 표시하거나 강조 표시하는 것 (또는 엉망인 경우에는 스크래치 버퍼)을 수행하는 것 M-x eval-region입니다. 도움이 되었기를 바랍니다.


다음은 빠르고 쉽게 구성을 테스트 할 수있는 방법입니다. C-x C-e특정 lisp의 끝에서 특정 기능을 개별적으로 실행할 수도 있습니다 .

Cx Ce는 대화식으로 컴파일 된 Lisp 함수 인 eval-last-sexp (글로벌 맵에 있음) 명령을 실행합니다.

Cx Ce에 바인딩됩니다.

(평가판 마지막 평가 EVAL-LAST-SEXP-ARG-INTERNAL)

포인트 이전의 sexp를 평가하십시오. 에코 영역에 값을 인쇄합니다. 접두사 인수를 사용하여 대화식으로 출력을 현재 버퍼에 인쇄합니다.

일반적으로이 함수는 변수 'eval-expression-print-length'및 'eval-expression-print-level'의 값에 따라 긴 출력을 자릅니다. 그러나 접두어 인수가 0이면 그러한 잘림이 없습니다. 이러한 접두사 인수는 정수가 몇 가지 추가 형식 (8 진수, 16 진수 및 문자)으로 인쇄되도록합니다.

'eval-expression-debug-on-error'가 기본값이 아닌 0이 아닌 경우,이 명령은 모든 오류가 디버거에 들어가도록 정렬합니다.


Mx eval-buffer 또는 Mx load-file 과 같은 명령 외에도 명령 행에서 새로운 emacs를 다시 시작할 수 있습니다.

emacs -q --load "init.el"

사용 예 stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/


이맥스에 대한 키 바인딩을 설정할 수 있습니다

;; reload emacs configuration
(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c r") 'reload-init-file) 

이것이 도움이되기를 바랍니다!


Emacs 내부에 쉘을 연 경우 다음을 수행 할 수도 있습니다.

. ~/.emacs

몇 가지 키 스트로크를 저장할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/2580650/how-can-i-reload-emacs-after-changing-it



반응형