2010-03-10 117 views
6

我更改了Emacs中的设置。现在,无论何时我尝试从命令行打开文件,它都会在文件顶部打开一个*scratch*缓冲区。有没有办法摆脱这个?或者重置我的emacs启动设置的方法?打开文件时打开没有暂存缓冲区的emacs

+1

很可能您已将'initial-buffer-choice'设置为't',可能是通过定制环境 - >初始化。 – starblue 2012-07-05 07:16:08

回答

3

您可以用M-x load-file〜/ .emacs重新加载您的.emacs文件。还有其他方法可以做到这一点,请检查问题How can I load changes to my .emacs without rebooting Emacs?

如果你认为你有你的.emacs文件有问题,请尝试使用-q选项打开:

emacs -q somefile 

如果按预期工作,你可能有一个错误在你的.emacs,以及一个好办法调试你的.emacs是使用选项--debug-init

emacs --debug-init 

它会告诉Emacs中提供加载您的.emacs遇到的任何错误的堆栈跟踪,类似:

Debugger entered--Lisp error: (wrong-type-argument symbolp (car n)) 
(setq (car n) 3) 
(let ((n ...)) (setq (car n) 3)) 
eval-buffer(#<buffer *load*<2>> nil "/home/tjackson/.emacs.tjackson.el" nil t) ; Reading at buffer position 161460 
load-with-code-conversion("/home/tjackson/.emacs.tjackson.el" "/home/tjackson/.emacs.tjackson.el" nil nil) 
load("/home/tjackson/.emacs.tjackson.el") 
(let ((debug-on-error t)) (load user-init-file)) 
(if init-file-debug (let (...) (load user-init-file)) (error (format "Problems while loading the file %s: %s" user-init-file ...))) 
(condition-case err (load user-init-file) (error (if init-file-debug ... ...))) 
(if (file-exists-p user-init-file) (condition-case err (load user-init-file) (error ...))) 
eval-buffer(#<buffer *load*> nil "/home/tjackson/.emacs" nil t) ; Reading at buffer position 12150 
load-with-code-conversion("/home/tjackson/.emacs" "/home/tjackson/.emacs" t t) 
load("~/.emacs" t t) 
#[nil "....."] 
command-line() 
normal-top-level() 

而这通常可以指出你可能是错的。在我上面的例子中,我正在使用setq,它看起来像在let语句中,它位于文件/home/tjackson/.emacs.tjackson.el内。在该文件中快速搜索导致我出现错误,我可以修复它。

+1

Nick说,它打开了文件顶部的抓取缓冲区(强调我的),这对我来说意味着他使用“emacs foo”调用emacs,并且在这种情况下,foo应该出现在* scratch *之上。从头开始将存在,但富应该是显示的缓冲区... – 2010-03-10 16:17:54

+0

@布莱恩谢谢,我已经更新了答案,以反映你的解释(这听起来是合理的)。 – 2010-03-10 18:10:18

1

如果您想重置emacs设置,您可以将当前的.emacs文件重命名为其他内容以备份 - 然后重新启动Emacs。

4
M-x customize-group 
initialization 

然后,在初始缓冲的选择,你可以选择其中:

  • 启动屏幕
  • 目录
  • 文件
  • 临时缓冲区

最后点击保存为将来的会话

您也可以将其打开/关闭。 看看这是否有帮助。 (你可能想要做的另一件事是在启动时只打开一个缓冲区,我不记得如何做到这一点,如果我发现它会发布更新)。

1

我的~/.emacs.d文件夹由root拥有并且具有限制性的r/w/x权限,所以我无法以任何非root用户身份进行访问。

确保您的当前用户具有读取emacs配置文件/目录的权限。在目录

sudo chown -R user:group ~/.emacs.d/ 

-R作品递归:

这个固定为我。

0

我删除了我的~/.emacs.d目录,并为我解决了这个问题。

相关问题