如何在不重新启动Emacs的情况下让Emacs重新加载我在.emacs
中更新的所有定义?
答案 0 :(得分:313)
您可以使用命令load-file( M-x load-file
,然后按两次返回以接受默认文件名,即正在编辑的当前文件。
您也可以将该点移动到任何性别的末尾并按 C-x C-e 来执行该性别。通常,如果您只是更换一两行,则无需重新加载整个文件。
答案 1 :(得分:139)
非常奇怪,非常方便
M-x eval-buffer
这里没有提到。
如果.emacs
是幂等的,它会立即评估缓冲区中的所有代码,这是最快的方法。
答案 2 :(得分:42)
您通常可以重新评估更改的区域。标记您已更改的〜/ .emacs区域,然后使用M-x eval-region RET
。这通常比重新评估整个文件更安全,因为编写一个在加载两次后不能正常工作的.emacs文件很容易。
答案 3 :(得分:36)
如果您在当前活动的缓冲区中打开了.emacs文件:
M-x eval-buffer
答案 4 :(得分:26)
M-x load-file
~/.emacs
答案 5 :(得分:13)
以下应该这样做......
M-x load-file
答案 6 :(得分:11)
其他人已经按照说明回答了你的问题,但我发现我通常想要执行我刚写的那些行。为此,lisp中的 Ctrl Alt x 工作正常。
答案 7 :(得分:9)
M-: (load user-init-file)
Eval:
提示符下输入它(包括括号)user-init-file
是默认情况下包含~/.emacs
值(指向配置文件路径)的变量(load)
是(load-file)
的较短,较旧且非交互式的版本;它不是emacs命令(将在 M-x 中键入),而仅仅是elisp函数 M-:
> M-x
答案 8 :(得分:8)
键盘快捷键:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
答案 9 :(得分:7)
我建议你最初不这样做。相反,启动一个新的emacs会话并测试您所做的任何更改,看它们是否正常工作。这样做的原因是为了避免让您处于无法运行的.emacs文件的状态,该文件无法加载或无法正确加载。如果您在原始会话中进行了所有编辑,并且在新会话中进行了所有测试,那么您将始终拥有可靠的内容来评论有问题的代码。
如果您对更改感到满意,请继续使用其中一个其他答案重新加载。我个人的偏好是eval
只是您添加/更改的部分,为此,只需突出显示已添加/更改的代码区域,然后调用M-x eval-region
。正如luapyad指出的那样,这样可以最大限度地减少评估的代码,最大限度地减少任何无意的副作用。
答案 10 :(得分:6)
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
答案 11 :(得分:4)
我目前使用的是Ubuntu 15.04;我想为此定义一个关键。
[M-insert]转换为键盘上的alt-insert
把它放在.emacs文件中:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
答案 12 :(得分:3)
在init文件中定义并通过 M-x reload-user-init-file
进行调用(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
答案 13 :(得分:2)
虽然M-x eval-buffer
会起作用,但您可能会遇到切换和其他类似问题。一个更好的方法可能是“标记”或突出显示你的.emacs中的新内容(如果你只是乱七八糟,甚至是临时缓冲区)然后M-x eval-region
。希望这会有所帮助。
答案 14 :(得分:2)
这是一种快速简便的方法来快速测试您的配置。您还可以在特定lisp的末尾使用C-x C-e
来单独执行某些功能。
C-x C-e运行命令eval-last-sexp(在global-map中找到),其中 是一个交互式编译的Lisp函数。
它与C-x C-e绑定。
(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
在点之前评估sexp;在回波区域中打印值。 交互式地,使用前缀参数,将输出打印到当前缓冲区。
通常,此函数会根据值截断长输出 变量'eval-expression-print-length'和 “EVAL-表达-印刷级”。前缀参数为零, 但是,没有这样的截断。这样的前缀参数也是 导致整数以多种其他格式打印(八进制, 十六进制,和字符)。
如果'eval-expression-debug-on-error'为非零,这是默认值, 此命令安排所有错误进入调试器。
答案 15 :(得分:2)
除 M-x eval-buffer 或 M-x加载文件等命令外,您可以从命令行重新启动新的emacs:
emacs -q --load "init.el"
用法示例stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
答案 16 :(得分:1)
您可以为此类
设置emacs的键绑定;; reload emacs configuration
(defun reload-init-file ()
(interactive)
(load-file "~/.emacs"))
(global-set-key (kbd "C-c r") 'reload-init-file)
希望这会有所帮助!
答案 17 :(得分:-2)
如果你碰巧在Emacs中打开了一个shell,你也可以这样做:
. ~/.emacs
可以保存几个击键。