2010-04-18 184 views

回答

15

不完全是您的问题的答案,但您可能想知道您可以选择在启动时打开不同的缓冲区,或者更改* scratch *缓冲区的内容。例如:

;; Make *scratch* buffer blank. 
(setq initial-scratch-message nil) 

;; Make the buffer that opens on startup your init file ("~/.emacs" or 
;; "~/.emacs.d/init.el"). 
(setq initial-buffer-choice user-init-file) 

在第一个示例中,* scratch *缓冲区将为空。在第二个例子中,* scratch *缓冲区仍然存在,但是user-init-file将会被重点关注。

+2

我认为第一个变量实际上叫'initial-scratch-message'(不是'-buffer')。 – 2011-02-11 13:55:14

+0

'message'是指在暂存缓冲区内显示的消息 - 例如,“Hello World!你已经到达最初的目的地,这被称为”暂存缓冲区“。 – lawlist 2013-04-18 03:08:05

+0

当字节编译文件时,我得到'Warning :赋值给自由变量\'initial-scratch-buffer \''... – 2014-06-20 12:05:11

6

我怀疑你的问题,你可能经常启动emacs,甚至一次你想编辑的每个文件。 (如果我在这个假设中是错误的,那么下面的评论不适用于你。)

Emacs的设计目的是在您需要编辑的同时访问各种文件时启动并运行数周或数月他们。 Emacs可以很好地处理多个文件,所以甚至几乎没有必要杀死相关的缓冲区,直到你得到50或100个文件为止。我在我的窗口系统启动后立即启动emacs,并运行直到我的系统关闭或崩溃。在这种模式下,初始暂存缓冲区不是问题,因为我很少看到它。

7

您可以自定义:

initial-buffer-choice 

我将其设置为我的主目录:“〜/”Dired模式启动。

4

我使用它来杀死暂存缓冲区,并在文本模式下打开一个名为Untitled的新缓冲区。 在新闻组上找到它并稍微修改它。

(defun my-close-scratch() 
    (kill-buffer "*scratch*") 
    (if (not (delq nil (mapcar 'buffer-file-name (buffer-list)))) 
     (new-untitled-buffer) 
    )) 

(defun my-emacs-startup-hook() 
    (my-close-scratch)) 
(add-hook 'emacs-startup-hook 'my-emacs-startup-hook) 

(defun new-untitled-buffer() 
    "Opens a new empty buffer." 
    (interactive) 
    (let ((buf (generate-new-buffer "Untitled"))) 
    (switch-to-buffer buf) 
    (normal-mode) 
    (setq buffer-offer-save t)) 
    (add-hook 'kill-buffer-query-functions 
      'ask-to-save-modified nil t) 
)

从文件管理器打开文件时关闭未命名时,Emacs是不开我用这个:

(defun my-close-untitled() 
    (if (get-buffer "Untitled") 
     (kill-buffers-by-name "Untitled"))) 

(add-hook 'find-file-hook 'my-close-untitled)
+1

为什么你不使用暂存缓冲区作为无标题缓冲区? – 2011-11-16 19:07:21

-1

正确的方法是添加inhibit-startup-screen到你的.emacs文件的custom-set-variables部分。

(custom-set-variables 
;; custom-set-variables was added by Custom. 
;; If you edit it by hand, you could mess it up, so be careful. 
;; Your init file should contain only one such instance. 
;; If there is more than one, they won't work right. 
'(inhibit-startup-screen t) 
)