【发布时间】:2009-08-17 14:58:25
【问题描述】:
我在使用 emacs 时遇到的一个问题是它似乎不能很好地处理不同目录中的同名文件。例如,如果我不小心,我最终会打开 20 个__init__.py 缓冲区。我一直在做的是使用M-x rename-buffer 并重命名它以指示它所在的包。但是,手动执行此操作有些乏味。
有人有解决这个问题的策略吗?
【问题讨论】:
我在使用 emacs 时遇到的一个问题是它似乎不能很好地处理不同目录中的同名文件。例如,如果我不小心,我最终会打开 20 个__init__.py 缓冲区。我一直在做的是使用M-x rename-buffer 并重命名它以指示它所在的包。但是,手动执行此操作有些乏味。
有人有解决这个问题的策略吗?
【问题讨论】:
我喜欢 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。
【讨论】:
如果您想要完全控制,您可以重新定义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。
【讨论】: