Emacs를 다시 .emacs
시작하지 않고 업데이트 한 모든 정의를 Emacs에 다시로드하려면 어떻게해야 합니까?
Emacs를 다시 .emacs
시작하지 않고 업데이트 한 모든 정의를 Emacs에 다시로드하려면 어떻게해야 합니까?
답변:
load-file 명령을 사용할 수 있습니다 ( M-x load-file
. return 키를 두 번 눌러 편집중인 현재 파일 인 기본 파일 이름을 사용하십시오).
포인트를 sexp의 끝으로 옮기고을 눌러 C-xC-e해당 sexp 만 실행할 수도 있습니다. 일반적으로 한두 줄만 변경하는 경우 전체 파일을 다시로드 할 필요는 없습니다.
defun
또는 뒤에 점을 이동하는 대신 defvar
선언 본문 및 유형 안에 그대로 둘 수도 있습니다 C-M-x
. 매우 편리합니다.
매우 편리하다는 것이 매우 이상합니다.
M-x eval-buffer
여기에 언급되지 않았습니다.
그것은 당신 .emacs
이 pot 등원 이라면 버퍼의 모든 코드, 가장 빠른 방법을 즉시 평가합니다 .
.emacs
등원인가?
.emacs
않는 것이 합리적 입니까?
일반적으로 변경된 지역을 재평가 할 수 있습니다. 변경 한 ~ / .emacs 영역을 표시 한 다음을 사용하십시오 M-x eval-region RET
. 두 번로드 한 후에도 제대로 작동하지 않는 .emacs 파일을 작성하기 쉽기 때문에 전체 파일을 다시 평가하는 것보다 안전합니다.
M-x load-file
~/.emacs
M-: (load user-init-file)
Eval:
프롬프트에 입력하십시오 (괄호 포함).user-init-file
~/.emacs
기본적으로 값을 보유하는 변수 (구성 파일 경로를 가리킴)(load)
더 짧고, 오래되고, 비대화 형 버전입니다 (load-file)
. emacs 명령이 아니고 M-x단순한 elisp 함수입니다.M-:
> M-x
다른 사람들은 이미 언급 한대로 귀하의 질문에 대답했지만 일반적으로 방금 작성한 줄을 실행하고 싶습니다. 그것을 위해, CtrlAltxlisp에서 잘 작동합니다.
eval-lastsexp
로,C-x C-e
C-M-x
"리스프의 끝"에있을 필요는 없습니다. C-x C-e
아마도 생각하고 있습니까? 좋은 C-M-x
점은 포인트가 함수 / 변수 선언의 중간에 있더라도 호출 할 수 있다는 것입니다.
처음에는이 작업을 수행하지 않는 것이 좋습니다. 대신, 새로운 emacs 세션을 시작하고 변경 사항이 올바르게 작동하는지 테스트하십시오. 이 방법을 사용하는 이유는 작동하지 않는 .emacs 파일이있는 상태에서로드하지 못하거나 완전히로드되지 않는 상태를 유지하기 위해서입니다. 원래 세션에서 모든 편집 작업을 수행하고 새 세션에서 모든 테스트를 수행하는 경우 항상 문제가되는 코드에 주석을 달 수있는 신뢰할만한 것이 있습니다.
변경 사항에 만족하면 다른 답변 중 하나를 사용하여 다시로드하십시오. 개인적으로 선호하는 것은 eval
추가 / 변경 한 섹션에만 해당되며, 추가 / 변경된 코드 영역을 강조 표시하고을 호출하기 만하면 M-x eval-region
됩니다. 그렇게하면 luapyad가 지적한대로 평가되는 코드가 최소화되어 의도하지 않은 부작용이 최소화됩니다.
키보드 단축키:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
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/