我对emacs的一个问题是它似乎不能很好地处理不同目录中的命名文件。例如,如果我不小心,我最终会打开20 __init__.py
个缓冲区。我一直在做的是使用M-x rename-buffer
并重命名它以指示它所在的包。但是,手动执行此操作有点单调乏味。
有没有人有任何策略来攻击这个问题?
答案 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
以供参考。