自动关闭暂存缓冲区

时间:2010-04-18 15:04:41

标签: emacs

我必须在.emacs文件中写一下,以便在打开Emacs时关闭*scratch*缓冲区?

6 个答案:

答案 0 :(得分:22)

(kill-buffer "*scratch*")

答案 1 :(得分:16)

不完全是您的问题的答案,但您可能想知道您可以选择在启动时打开不同的缓冲区,或更改* 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 :(得分:7)

您可以自定义:

initial-buffer-choice

我将它设置为我的homedir:“〜/” Dired 模式启动。

答案 3 :(得分:6)

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

Emacs旨在启动,然后在您需要编辑它们时访问各种文件时保持运行数周或数月。 Emacs非常好地处理多个文件,所以甚至几乎不需要杀死相关的缓冲区,直到你得到50或100个挂起。我在窗口系统启动后启动emacs,直到我的系统关闭或崩溃为止。在这种模式下,初始暂存缓冲区是一个非问题,因为我很少看到它。

答案 4 :(得分: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未打开时从filemanager打开文件时关闭Untitled我使用:

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

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

答案 5 :(得分:-2)

正确的方法是将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)
)