有没有办法在不重新启动Emacs的情况下对我的.emacs文件中的切换进行更改?

时间:2010-06-01 12:05:37

标签: emacs toggle loading dot-emacs

我希望能够对我的.emacs文件进行更改,而无需重新加载Emacs。

我发现有三个问题可以回答我的问题(你可以找到它们hereherehere),但问题是我刚刚做出的改变是一个切换,并且作为对这些问题的两个答案(a1a2)的评论解释,那里给出的解决方案(例如Mx reload-file或Mx eval-buffer)不要不适用于切换。

我想有一种方法可以使用命令再次切换变量,但如果有办法重新加载整个.emacs并重新评估所有切换而不必指定它们,我更愿意。< / p>

在任何情况下,如果有人告诉我如何切换变量的值,我也会感激,如果我只是更改了一个切换,我可以用命令来做,而不是仅为此重新启动Emacs(我是新的Emacs)。我不知道这些信息有多么有用,但我应用的更改如下(我从this回答另一个问题):

(setq skeleton-pair t)  
(setq skeleton-pair-on-word t)  
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)  
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)  
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)   
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)  

编辑:我在.emacs中包含了上述内容并重新加载了Emacs,以便更改生效。然后我评论了所有这些并尝试了M-x加载文件。这不起作用。下面的建议(PP的C-x C-e有效,如果我用它来第一次评估切换,但不是当我想要撤消它时)。如果存在这样的事情,我想要评估评论的东西......

谢谢:)

6 个答案:

答案 0 :(得分:6)

您可能想尝试的一些事情:

M-x load-file(然后在出现提示时,键入~/.emacs 输入)。 M-x表示按下元键(通常是Linux和Windows桌面上的Esc),然后按普通的x字符键。

或者,当您的.emacs文件处于打开状态时,请在您要执行的功能的紧密括号后面放置提示,然后键入Ctrl-XCtrl-E。这将执行包含在光标左侧最近的括号内的块。

这是我经常用于复杂搜索和替换的最后一种技术。假设我正在编辑一个XML文件,我想在之前将关闭标记移动到该行:我将键入我当前的XML缓冲区(query-replace-regexp "[ \r\n\t]*</" "</"),然后将光标放在右括号后面,并键入{{1} },Ctrl-X

答案 1 :(得分:4)

我认为你想尝试打开/关闭骨架对吗?

我很想通过:

来做到这一点
(setq skeleton-pair t)    ; turns skeleton-pair on
(setq skeleton-pair nil)  ; turns skeleton-pair off

在.emacs中,按下我想要尝试的特定版本的右括号旁边的C-x C-e。当然,我必须记住确保.emacs只有我想要的最终设置,所以下次启动时它会做正确的事。

答案 2 :(得分:4)

  

我在.emacs中包含了上面的内容并重新加载了Emacs,以便更改生效。然后我评论了所有这些并尝试了M-x加载文件。这不起作用。

它不起作用,因为当你启动Emacs时,你设置了一些变量和键。使用这些命令重新加载.emacs 撤消它们。您必须手动覆盖设置以使用

撤消它们
(setq variable-name nil)

M-x global-unset-key输入后跟您要取消设置的键。

答案 3 :(得分:4)

您始终可以使用* scratch *缓冲区来计算表达式。

如果您想设置变量:

(setq skeleton-pair t)^ J

取消设置:

(setq skeleton-pair nil)^ J

你必须使用ctrl-J来调用评估; return(或ctrl-M)不起作用。

这适用于所有lisp表达式,BTW。如果你有一个快速的计算:

(+ 51 33)^ J 84

或者,如果您想要找到框架的宽度: (帧宽度)道^ J 80

如果您正在修补或要求评估非交互式命令或变量,这将非常有用。

答案 4 :(得分:2)

不确定我是否理解你的问题(有点累),但是如何标记你已经改变了什么(C-spc)然后M-x eval-region?除非我做了一些重要的事情,否则这就是我通常需要做的事情。

答案 5 :(得分:0)

每次评估elisp代码时,都会转到此emacs会话的全局emacs环境;因此,如果设置变量值,即使重新加载.emacs,它仍然存在于环境中。

如果我们可以在“沙盒”中预加载.emacs(或任何lisp)来测试它,那将是很好的。 当我进行大量的.emacs自定义时,我通常打开一个emacs来编辑.emacs,另一个用来评估(我可以重新启动以避免破坏环境)。