C-x C-e
어느 것이 eval-last-sexp
및 인지 알고 M-x eval-buffer
있지만 모든 변경 사항을 적용하기에 항상 충분하지는 않습니다. 때로는 구성이 변경된 모드에있는 버퍼를 실제로 닫아야하고 다른 경우에는 emacs를 완전히 다시 시작해야합니다. 이 문제를 처리하는 더 일반적인 방법이 있습니까? 또는 기존의 열린 버퍼와 대화식 기록을 잃지 않고 emacs를 다시 시작하는 방법이 있습니까?
C-x C-e
어느 것이 eval-last-sexp
및 인지 알고 M-x eval-buffer
있지만 모든 변경 사항을 적용하기에 항상 충분하지는 않습니다. 때로는 구성이 변경된 모드에있는 버퍼를 실제로 닫아야하고 다른 경우에는 emacs를 완전히 다시 시작해야합니다. 이 문제를 처리하는 더 일반적인 방법이 있습니까? 또는 기존의 열린 버퍼와 대화식 기록을 잃지 않고 emacs를 다시 시작하는 방법이 있습니까?
답변:
아니요, 수정 된 구성을 다시로드 할 수 없으며 Emacs가로드 될 때 해당 수정이 이미 적용된 것처럼 Emacs가 작동하도록 할 수 있습니다. 요컨대, Emacs 패키지는 이것이 실현 되기에는 너무 많은 자유를 가지고 있습니다.
일부 주요 모드는 구성 변경을 선택하지 않습니다. 그 이유는 모드를 활성화하면 특정 옵션의 현재 값을 기반으로 일부 버퍼 로컬 변수를 설정하기 때문입니다. 사용하는 모든 버퍼에서 이러한 모드를 다시 활성화하지 않으면 모든 변경 사항이 적용되지 않습니다. 그럼에도 불구하고 어떤 것들은 변하지 않는 것이 가능합니다. 옵션을 custom-set-variables
양식을 사용하여 사용자 정의하면이 작업의 가능성이 높아지 지만 각 옵션마다 명시 적으로 구현해야합니다. 그리고 지금까지 우리는 주요 모드와 옵션에 대해서만 이야기했습니다 ...
각 버퍼의 주 모드를 다시 활성화하는 명령을 구현할 수 있습니다. 그러나 모든 변경 사항을 완전히 활성화 할 가능성은 거의 없으며 수동으로 활성화 한 모든 부 모드를 비활성화하고 다른 모든 종류의 상태를 잃을 수도 있습니다.
eval-buffer
따라서 가능한 많은 변경 사항을 적용하기 위해 init 파일을 전혀 사용 하지 않는 것이 좋습니다 . 를 사용하여 변경된 설정을 개별적으로 평가하십시오. eval-last-sexp
그래도 작동하지 않으면 Emacs를 다시 시작해야합니다.
Emacs를 닫을 때 상태를 유지하는 방법은 다른 질문이며 별도로 질문해야합니다.
때로는 구성이 변경된 모드에있는 버퍼를 실제로 닫아야합니다.
호출 normal-mode
은 해당 버퍼 또는 관련 후크를 변경 한 경우 지정된 버퍼에 대한 모든 모드를 다시 트리거하는 유용한 방법입니다.
실행 취소 기록을 삭제하지 않고 파일을 다시로드하는 것과 같은 revert-buffer
(을 호출하는 normal-mode
)을 사용할 수도 있습니다 .
(을 사용하여 파일을 다시로드 할 수도 C-xC-v있지만 실행 취소 기록 이 삭제 됩니다 .)
에서 M-x ibuffer
대문자 입력하는 V모든 버퍼를 표시 되돌립니다 반면, 대문자 E와 W모든 표시 버퍼에 대한 임의의 elisp을 평가하는 데 사용할 수 있습니다.