2010-04-18 144 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) 
)