在emacs中处理多个同名文件的最佳方法是什么?

时间:2009-08-17 14:58:25

标签: emacs elisp

我对emacs的一个问题是它似乎不能很好地处理不同目录中的命名文件。例如,如果我不小心,我最终会打开20 __init__.py个缓冲区。我一直在做的是使用M-x rename-buffer并重命名它以指示它所在的包。但是,手动执行此操作有点单调乏味。

有没有人有任何策略来攻击这个问题?

2 个答案:

答案 0 :(得分:19)

我喜欢Emacs附带的uniquify

(require 'uniquify)

(setq uniquify-buffer-name-style 'reverse)
(setq uniquify-separator "/")
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified

(setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers (or Gnus mail buffers)

使用这些设置,目录会添加到缓冲区名称中,从而显示文件所在的位置。例如,加载文件/some/path/to/Makefile/some/path/to/different/Makefile将导致以下缓冲区名称:

Makefile/to           (which is /some/path/to/Makefile)

Makefile/different    (which is /some/path/to/different/Makefile)

uniquify还会在删除缓冲区时处理更新缓冲区名称,因此当删除其中一个Makefile缓冲区时,另一个缓冲区将重命名为Makefile

答案 1 :(得分:1)

如果您想要完全控制,可以重新定义create-file-buffer

如果你想要完整的文件名,它可以像

一样简单
(defun create-file-buffer (filename)
  "Create a suitably named buffer for visiting FILENAME, and return it."
  (generate-new-buffer filename))

请参阅files.el以供参考。