2011-05-23 59 views
0

我經常將許多00readme.txt文件加載到emacs中,並且默認的 緩衝區名稱「00readme.txt」不是很有幫助。如何根據文件名製作emacs自動名稱緩衝區?

我使用手動重命名緩衝重命名他們「PROJECT1」,「項目2」等

我如何告訴Emacs的:「加載/foo/bar/00readme.txt時, 自動命名緩衝區project1,而不是00readme.txt「?

+3

你給的信息,使重命名似乎是隨機的。您正在加載的文件名與您想要的緩衝區名稱之間是否有任何關聯? – 2011-05-23 14:16:46

回答

1
;; toss this into your .emacs file and fiddle with it till you get what you want 
(defun my-buffer-renamer() 
(interactive) 
(let() ; <-- local vars in here 

    (message "bufer name is %s" (current-buffer)) 
    (rename-buffer "something else") ; make sure to make unique names 

)) 

(add-hook 'text-mode-hook 'my-buffer-renamer) ; only do this once 

Emacs支持大量'hook'函數,當發生特定操作時會執行的回調函數。在這裏,我們添加一個函數來在文本文件被加載時被調用。

8

您可能還想看看emacs附帶的uniquify庫,它可以在打開具有相同名稱的文件時將部分目錄名稱添加到緩衝區名稱中。

+0

+1,這是我使用的,它工作得很好。 – andrewdski 2011-05-23 14:46:22

+0

是否有辦法始終使用uniquify,即使沒有重複的名稱? – Piotr 2017-07-28 09:38:20

1

下面是uniquify一個不錯的配置,這是標準的Emacs的方式來解決問題:

(require 'uniquify) 
(setq uniquify-buffer-name-style 'reverse) 
     uniquify-separator " • " 
     uniquify-after-kill-buffer-p t 
     uniquify-ignore-buffers-re "^\\*" 
相關問題