我怎样才能让Emacs重新加载我在.emacs
中更新的所有定义,而不重新启动Emacs?
你可以使用load-file命令(M-x load-file
,然后按两次回车键接受默认文件名,也就是当前正在编辑的文件)。
你也可以把点移到任何sexp的末尾,然后按C-xC-e来执行该sexp。通常情况下,如果你只是改变一两行,就没有必要重新加载整个文件。
M-:
(load user-init-file)
。
Eval:
提示中输入(包括括号)。user-init-file
][1]是一个变量,默认为~/.emacs
值(指向配置文件路径)。(load)
][2]是[(load-file)
][3]的较短、较旧、非交互式版本。
它不是一个emacs命令(要用M-x键入),而仅仅是一个elisp函数。M-:
>;M-x
。
[1]: https://www.gnu.org/software/emacs/manual/html_node/elisp/Init-File.html [2]: https://www.gnu.org/software/emacs/manual/html_node/eintr/Loading-Files.html [3]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Lisp-Libraries.html
键盘快捷键:{{{6782696}}。
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
我建议你不要这样做,最初。 取而代之的是,启动一个新的emacs会话,测试你所做的任何改变,看看它们是否正常工作。 这样做的原因是为了避免让你处于一个无法操作的.emacs文件的状态,它无法加载或无法干净地加载。 如果你在原来的会话中进行所有的编辑,在新的会话中进行所有的测试,你总是有一些可靠的东西来注释出违规的代码。
当你最终对你的改变感到满意时,再继续使用其他答案之一来重新加载。
我个人倾向于eval
只对你添加/修改的部分进行评价,要做到这一点,只需突出显示添加/修改的代码区域,然后调用M-x eval-region
。
正如 luapyad 指出的那样,这样做可以最大限度地减少被评估的代码,减少任何无意的副作用。
这里有一个快速简单的方法来快速测试你的配置。
你也可以在特定的lisp结尾使用C-x C-e
来单独执行某些函数。
>.C-x C-e C-x C-e运行eval-last-sexp命令(在global-map中找到),它的作用是 >.是一个交互式编译的Lisp函数。 是一个交互式编译的Lisp函数。 >.是一个交互式编译的Lisp函数。 &gt。 它被绑定在C-x C-e上。
它与C-x C-e绑定。 它与C-x C-e绑定。 (eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
在点前评估sexp。 在回音区打印数值。
评估点前的sexp;在回声区打印值。 使用前缀参数,交互式地将输出打印到当前缓冲区。 用前缀参数交互式打印输出到当前缓冲区。 。 通常情况下,该函数会根据输出值
变量'eval-expression-print-length'和 >.'eval-expression-print-level'。 'eval-expression-print-level'。 前缀参数为0。
然而,没有这样的截断。 这样的前缀参数也
导致整数以几种额外的格式打印(八进制。
十六进制,和字符)。) 十六进制,和字符)。
如果'eval-expression-debug-on-error'是非nil,即默认值。
该命令安排所有错误进入调试器。
除了M-x eval-buffer或M-x load-file这样的命令外,你还可以从命令行重新启动一个新的emacs。
emacs -q --load "init.el"
使用示例 stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/