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

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

对该问题的评论 (9)
解决办法

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

你也可以把点移到任何sexp的末尾,然后按C-xC-e来执行该sexp。通常情况下,如果你只是改变一两行,就没有必要重新加载整个文件。

评论(4)

很奇怪,非常方便的

M-x eval-buffer

这里没有提到。

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

评论(7)

你通常可以重新评估被改变的区域。 在 ~/.emacs 的 ~/.emacs 区域中标记你已经改变的区域,然后使用 M-x eval-region RET。 这通常比重新评估整个文件更安全,因为很容易写出一个被加载两次后就不能正常工作的.emacs文件。

评论(4)

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

M-x eval-buffer
评论(2)
M-x load-file
~/.emacs
评论(1)

下面的内容应该可以做到...

M-x load-file
评论(0)

其他人已经如实回答了你的问题,但我发现我通常想执行我刚写的那几行。为此,lt;kbd>CtrlAltx在lisp中工作就可以了。

评论(3)

解决方案

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

评论(0)

键盘快捷键:{{{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
评论(0)
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
评论(0)

我建议你不要这样做,最初。 取而代之的是,启动一个新的emacs会话,测试你所做的任何改变,看看它们是否正常工作。 这样做的原因是为了避免让你处于一个无法操作的.emacs文件的状态,它无法加载或无法干净地加载。 如果你在原来的会话中进行所有的编辑,在新的会话中进行所有的测试,你总是有一些可靠的东西来注释出违规的代码。

当你最终对你的改变感到满意时,再继续使用其他答案之一来重新加载。 我个人倾向于eval只对你添加/修改的部分进行评价,要做到这一点,只需突出显示添加/修改的代码区域,然后调用M-x eval-region。 正如 luapyad 指出的那样,这样做可以最大限度地减少被评估的代码,减少任何无意的副作用。

评论(0)

我'目前使用Ubuntu 15.04。 我喜欢为这个定义一个键。 M-insert]在我的键盘上翻译成alt-insert。 把这个放在你的.emacs文件中。

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

在你的初始文件中定义它,并通过M-x reload-user-init-file调用

(defun reload-user-init-file()
  (interactive)
  (load-file user-init-file))
评论(0)

虽然 "M-x eval-buffer "可以工作,但你可能会遇到toggles和其他类似的问题。 一个更好的方法可能是"标记" 或者在你的.emacs中高亮显示新的内容(如果你只是在瞎折腾,甚至是划痕缓冲区),然后M-x eval-region。 希望能帮到你。

评论(0)

这里有一个快速简单的方法来快速测试你的配置。 你也可以在特定的lisp结尾使用C-x C-e来单独执行某些函数。

&gt.C-x C-e C-x C-e运行eval-last-sexp命令(在global-map中找到),它的作用是 &gt.是一个交互式编译的Lisp函数。 是一个交互式编译的Lisp函数。 &gt.是一个交互式编译的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'和 &gt.'eval-expression-print-level'。 'eval-expression-print-level'。 前缀参数为0。

然而,没有这样的截断。 这样的前缀参数也

导致整数以几种额外的格式打印(八进制。

十六进制,和字符)。) 十六进制,和字符)。

如果'eval-expression-debug-on-error'是非nil,即默认值。

该命令安排所有错误进入调试器。

评论(0)

除了M-x eval-bufferM-x load-file这样的命令外,你还可以从命令行重新启动一个新的emacs。

emacs -q --load "init.el"

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

评论(0)

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

;; reload emacs configuration
(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c r") 'reload-init-file) 

希望能帮助到大家!

评论(0)

如果你正好在Emacs里面打开了一个shell,你也可以这样做。

. ~/.emacs

可能会省去一些按键。

评论(0)