2011-05-23 40 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 "^\\*"