【问题标题】:How to create temporary files `.#filename` in `/tmp`, not working directory如何在`/tmp`中创建临时文件`.#filename`,而不是工作目录
【发布时间】:2014-06-12 13:51:58
【问题描述】:

在 Emacs 中修改文件时,会在工作目录中创建一个临时文件,如下所示:.#filename。保存缓冲区时文件被删除。

我在我的 Git 远程存储库中发现了其中一些类型的临时文件,我认为最好从源头扼杀萌芽,而不是将 Git 配置为对每个项目都忽略它们。

我们如何配置 Emacs 以在 /tmp 目录而不是工作目录中创建这些文件?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    该文件称为 lock 文件 -- 从 Emacs 版本 24.3 开始,可以通过以下设置进行控制:

    (setq create-lockfiles nil)
    

    https://stackoverflow.com/a/12974060/2112489

    【讨论】:

      【解决方案2】:

      这些文件是自动保存文件。变量auto-save-file-name-transforms 控制对缓冲区的文件名进行哪些修改以生成自动保存文件名。通常,file.el 中的默认值足以将所有自动保存文件放在/tmp 目录中。它的默认值为:

      (("\\`/[^/]*:\\([^/]*/\\)*\\([^/]*\\)\\'" "/tmp/\\2" t))
      

      /tmp 是通过读取变量 temporary-file-directory 得出的。检查该值,使其指向/tmp。然后,为auto-save-file-name-transforms(以及因此为自动保存文件名)构造的值将是正确的。

      【讨论】:

      • 此设置似乎对构建 --with-ns 的相当新版本的 Emacs Trunk 没有任何影响。关于这个特定文件.#filename 的信息是它是一个alias——信息在Finder.app 中可见。这可能是 OSX 系统特定的动物吗?我还有以下设置:(setq backup-inhibited t); (setq auto-save-default nil); (setq savehist-autosave-interval nil); (savehist-mode -1).
      • 嗯...但现在我不明白。您已禁止备份,因此您根本看不到任何备份文件。您的配置或 Emacs 读取配置文件的方式一定有问题。将backup-inhibited 设为非 nil 将永远不会创建备份文件。
      • 啊,对不起,我的错。我将备份文件与自动保存文件混淆了。我正在改变我的回答。
      • 感谢您调查这个问题——我很幸运,至少找到了它的描述:# Lock files used by the Emacs editor.我认为自动保存文件使用~。就我而言,我有.# 继续。 github.com/core-plot/core-plot/blob/master/.gitignore#L7 我们可以告诉 Emacs 将该锁定文件放在 /tmp 目录中,而不是使用 Git 忽略吗?
      【解决方案3】:

      作为更通用的解决方案,您还可以创建一个全局排除文件,该文件适用于本地的所有存储库。默认情况下,这将在$XDG_CONFIG_HOME/git/ignore(通常是~/.config/git/ignore)中。可以使用core.excludesFile 选项覆盖路径。详情请见the gitignore manpage。

      $ mkdir -p ~/.config/git
      $ echo '.#*' >> ~/.config/git/ignore
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多