修改后如何重新加载.emacs?
如何让Emacs重新加载我在修改后如何重新加载.emacs?,emacs,Emacs,如何让Emacs重新加载我在.Emacs中更新的所有定义,而不重新启动Emacs?以下内容应该可以做到这一点 M-x load-file 如果在当前活动缓冲区中打开了.emacs文件: M-x eval-buffer M-x eval buffer其他人已经回答了您的问题,但我发现我通常希望执行我刚才写的行。为此,lisp中的CtrlAltx工作得很好。我建议您最初不要这样做。相反,启动一个新的emacs会话并测试您所做的任何更改,看看它们是否正常工作。这样做的原因是为了避免使您处于无法操作的
.Emacs
中更新的所有定义,而不重新启动Emacs?以下内容应该可以做到这一点
M-x load-file
如果在当前活动缓冲区中打开了.emacs文件: M-x eval-buffer
M-x eval buffer其他人已经回答了您的问题,但我发现我通常希望执行我刚才写的行。为此,lisp中的CtrlAltx工作得很好。我建议您最初不要这样做。相反,启动一个新的emacs会话并测试您所做的任何更改,看看它们是否正常工作。这样做的原因是为了避免使您处于无法操作的.emacs文件无法加载或无法干净加载的状态。如果您在原始会话中进行了所有编辑,在新会话中进行了所有测试,那么您总会有一些可靠的方法来注释掉有问题的代码
当您最终对所做的更改感到满意时,请继续使用其他答案之一重新加载。我个人的偏好是只评估你添加/更改的部分,只需突出显示添加/更改代码的区域并调用
M-x评估区域
。正如luapyad指出的那样,这样做可以最大限度地减少所评估的代码,最大限度地减少任何无意的副作用。您可以使用命令加载文件(M-xload file
,然后按两次回车键接受默认文件名,即当前正在编辑的文件)
您也可以将该点移动到任何sexp的末尾,然后按C-xC-e执行该sexp。如果只是更改一两行,通常不需要重新加载整个文件。您通常可以重新计算更改的区域。标记已更改的~/.emacs区域,然后使用
M-x eval region RET
。这通常比重新评估整个文件更安全,因为很容易编写一个.emacs文件,该文件在加载两次后无法正常工作。尽管M-x eval buffer
可以工作,但您可能会遇到切换和其他类似问题。一个更好的方法可能是“标记”或突出显示.emacs中的新内容(如果你只是在胡闹,甚至可以划掉缓冲区),然后M-x eval region
。希望这有帮助。在您的init文件中定义它,并通过M-x reload user init file调用它
M-x load-file
~/.emacs
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
很奇怪,这个很方便 M-x
eval缓冲区
这里没有提到
如果
.emacs
是幂等的,它会立即计算缓冲区中的所有代码,这是最快的方法 我现在在Ubuntu 15.04上;我想为此定义一个键。[M-insert]在我的键盘上转换为alt insert。
将其放入.emacs文件中:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
下面是一个快速测试配置的简单方法。您还可以在特定lisp的末尾使用
C-x C-e
单独执行某些函数
C-x C-e运行命令eval last sexp(在全局映射中找到),该命令
是一个交互式编译的Lisp函数
它绑定到C-x C-e
(评估最后一个sexp评估最后一个sexp评估内部)
赛前评估sexp;在回显区域打印值。
以交互方式,使用前缀参数,将输出打印到当前缓冲区
通常,此函数根据值截断长输出
变量“eval expression print length”和
“评估表达式打印级别”。前缀参数为零,
然而,没有这样的截断。这样的前缀参数也是
使整数以多种其他格式打印(八进制,
十六进制和字符)
如果“eval expression debug on error”为非nil,这是默认值,
此命令安排所有错误进入调试器
键盘快捷键:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
如果您碰巧在Emacs内部打开了一个shell,您还可以执行以下操作:
. ~/.emacs
可以节省一些按键 您可以像这样为emacs设置键绑定
;; reload emacs configuration
(defun reload-init-file ()
(interactive)
(load-file "~/.emacs"))
(global-set-key (kbd "C-c r") 'reload-init-file)
希望这会有帮助 除了像M-x eval buffer或M-x load file这样的命令之外,您可以从命令行重新启动新的emacs:
emacs -q --load "init.el"
用法示例解决方案
M-:(加载用户初始化文件)
笔记
- 您可以在
prompt(包括括号)中键入它Eval:
- 默认情况下,是一个保存
值(指向配置文件路径)的变量~/.emacs
- 是较短、较旧且非交互式的版本;它不是一个emacs命令(在M-x中键入),而只是一个elisp函数
结论
M-:
M-x
我知道emacs通常被认为是一个操作系统,但是…s/reboot/restart/?我不是一个开发人员,所以很多对开发人员有意义的答案对开发人员来说并没有多大意义me@MJB堆栈溢出的目的是为最基本的问题提供知识库。这个问题完全符合堆栈溢出的目的。请看五年后的《哈哈现在》的可能翻版,推荐的“谷歌搜索优先”的线索在这里!请参见eval lastsepp
,在C-x C-e
中使用C-M-x
,您不必“在lisp的末尾”——您是否在考虑C-x C-e
?关于<>代码> C-MXX/CODE >的好处是,即使点在函数/变量声明的中间,也可以调用它。在我只使用C-X-C-E的时候,我可能已经习惯了LISP的结束。谢谢你的接球!这里需要注意的一点是,这样做可能不会使您处于与重启方法相同的状态。(人为的例子:如果你的.emacs中有一个“切换”效果),请记住,这可能并不总是像你认为的那样。如果变量的内容是触发器(即将布尔值设置为其相反),那么行为将与loadi不同
emacs -q --load "init.el"