【问题标题】:What's the best way to handle multiple like-named files in emacs?在 emacs 中处理多个同名文件的最佳方法是什么?
【发布时间】:2009-08-17 14:58:25
【问题描述】:

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

有人有解决这个问题的策略吗?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    我喜欢 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

    【讨论】:

    • 并且默认自带 Emacs Starter Kit。
    • 你的意思是 Emacs Starter Kit 默认启用它?因为它是 Emacs 自带的。
    【解决方案2】:

    如果您想要完全控制,您可以重新定义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

    【讨论】:

    • 重新定义标准库函数不是明智之举。最好告诉它 uniquify 的作用。
    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 2018-12-03
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多