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

我怎样才能让Emacs重新加载我在.emacs更新的所有定义,而无需重新启动Emacs?

你可以使用命令load-file( Mx load-file ,然后按回车两次接受默认文件名,这是当前正在编辑的文件)。

你也可以把点移动到任何sexp的末尾,然后按Cx Ce来执行那个sexp。 通常,如果您只是更改一两行,则无需重新加载整个文件。

很奇怪,非常方便

Mx eval-buffer

在这里没有提到。

如果你的.emacs是幂等的,它会立即评估缓冲区中的所有代码,它是最快的方法。

如果您在当前活动的缓冲区中打开了.emacs文件:

  Mx eval缓冲区 

您通常可以重新评估更改的区域。 标记已经更改的〜/ .emacs的区域,然后使用Mx eval-region RET 。 这通常比重新评估整个文件更安全,因为编写一个.emacs文件很容易,加载两次后不能正常工作。

 Mx load-file ~/.emacs 

以下应该做到这一点…

 Mx load-file 

其他人已经如你所说的回答了你的问题,但是我发现我通常要执行我刚写的这些句子。 为此,lisp中的Ctrl Alt x可以正常工作。

我build议你最初不要这样做。 相反,开始一个新的emacs会话,并testing你所做的任何更改,看看他们是否正常工作。 这样做的理由是为了避免让你处于无法运行的.emacs文件状态,无法加载或无法加载干净。 如果您在原始会话中进行了所有的编辑工作,并且在新的会话中进行了所有的testing,那么您始终可以使用可靠的方式评论出错的代码。

当您最终满意您的更改时,请继续使用其他答案之一重新加载。 我个人的偏好是只eval你添加/更改的部分,然后只需突出显示添加/更改的代码Mx eval-region并调用Mx eval-region 。 这样做可以最大限度地减less所评估的代码,最大限度地减less任何无意的副作用,正如luapyad指出的那样。

 Cx Ce ;; current line Mx eval-region ;; region Mx eval-buffer ;; whole buffer Mx load-file ~/.emacs.d/init.el 

键盘快捷键:

 (defun reload-init-file () (interactive) (load-file "~/.emacs")) (global-set-key (kbd "Cc Cl") 'reload-init-file) ; Reload .emacs file 

我目前在Ubuntu 15.04上; 我喜欢为此定义一个关键。
[M插入]转换为我的键盘上的ALT插入。
把它放在你的.emacs文件中:

 (global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs"))) 

虽然Mx eval-buffer将工作,你可能会遇到问题与切换和其他类似的东西。 一个更好的方法可能是“标记”或突出显示你的.emacs中的新内容(或者甚至是临时缓冲区,如果你只是搞乱了),然后Mx eval-region 。 希望这可以帮助。

在init文件中定义它,并通过Mx reload-user-init-file调用

 (defun reload-user-init-file() (interactive) (load-file user-init-file)) 

这是快速简单的方法来快速testing你的configuration。 您也可以在特定的lisp结束时使用Cx Ce来单独执行某些function。

Cx Ce运行命令eval-last-sexp(在global-map中find),这是一个交互式编译的Lisp函数。

这是必然的Cx Ce。

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)

在点之前评估sexp; 在回波区域打印值。 以前缀参数交互式地输出到当前缓冲区。

通常,该函数根据variables“eval-expression-print-length”和“eval-expression-print-level”的值截断长输出。 但是,如果前缀参数为零,则不存在这种截断。 这样的前缀参数也会导致整数以多种格式(八进制,hex和字符)打印。

如果'eval-expression-debug-on-error'是非零的,这是默认的,这个命令安排所有的错误进入debugging器。

除了像Mx eval-bufferMx加载文件这样的命令之外,您可以从命令行重新启动一个新的emacs:

 emacs -q --load "init.el" 

用法示例stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/

你可以像这样设置emacs的键绑定

 ;; reload emacs configuration (defun reload-init-file () (interactive) (load-file "~/.emacs")) (global-set-key (kbd "Cc r") 'reload-init-file) 

希望这会有所帮助!

如果你碰巧在Emacs里面打开了一个shell,你也可以这样做:

 . ~/.emacs 

可以保存几个键击。