如何在更改后重新加载.emacs?

时间:2010-04-05 19:36:08

标签: emacs

如何在不重新启动Emacs的情况下让Emacs重新加载我在.emacs中更新的所有定义?

18 个答案:

答案 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

可以保存几个击键。