如何在修改后重新加载.emacs?
我怎样才能让Emacs重新加载我在.emacs
中更新的所有定义,而不重新启动Emacs?
360
18
我怎样才能让Emacs重新加载我在.emacs
中更新的所有定义,而不重新启动Emacs?
你可以使用load-file命令(M-x
load-file
,然后按两次回车键接受默认文件名,也就是当前正在编辑的文件)。你也可以把点移到任何sexp的末尾,然后按C-xC-e来执行该sexp。通常情况下,如果你只是改变一两行,就没有必要重新加载整个文件。
很奇怪,非常方便的
M-x
eval-buffer
这里没有提到。
如果你的
.emacs
是幂等的,它会立即评估缓冲区中的所有代码,这是最快速的方法。你通常可以重新评估被改变的区域。 在 ~/.emacs 的 ~/.emacs 区域中标记你已经改变的区域,然后使用
M-x eval-region RET
。 这通常比重新评估整个文件更安全,因为很容易写出一个被加载两次后就不能正常工作的.emacs文件。如果你在当前活动的缓冲区中打开了你的.emacs文件:
下面的内容应该可以做到...
其他人已经如实回答了你的问题,但我发现我通常想执行我刚写的那几行。为此,lt;kbd>CtrlAltx在lisp中工作就可以了。
解决方案
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}}。
我建议你不要这样做,最初。 取而代之的是,启动一个新的emacs会话,测试你所做的任何改变,看看它们是否正常工作。 这样做的原因是为了避免让你处于一个无法操作的.emacs文件的状态,它无法加载或无法干净地加载。 如果你在原来的会话中进行所有的编辑,在新的会话中进行所有的测试,你总是有一些可靠的东西来注释出违规的代码。
当你最终对你的改变感到满意时,再继续使用其他答案之一来重新加载。 我个人倾向于
eval
只对你添加/修改的部分进行评价,要做到这一点,只需突出显示添加/修改的代码区域,然后调用M-x eval-region
。 正如 luapyad 指出的那样,这样做可以最大限度地减少被评估的代码,减少任何无意的副作用。我'目前使用Ubuntu 15.04。 我喜欢为这个定义一个键。 M-insert]在我的键盘上翻译成alt-insert。 把这个放在你的.emacs文件中。
在你的初始文件中定义它,并通过M-x reload-user-init-file调用。
虽然 "M-x eval-buffer "可以工作,但你可能会遇到toggles和其他类似的问题。 一个更好的方法可能是"标记" 或者在你的.emacs中高亮显示新的内容(如果你只是在瞎折腾,甚至是划痕缓冲区),然后
M-x eval-region
。 希望能帮到你。这里有一个快速简单的方法来快速测试你的配置。 你也可以在特定的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上。
除了M-x eval-buffer或M-x load-file这样的命令外,你还可以从命令行重新启动一个新的emacs。
使用示例 stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
你可以像这样为emacs设置键绑定。
希望能帮助到大家!
如果你正好在Emacs里面打开了一个shell,你也可以这样做。
可能会省去一些按键。