【问题标题】:How can I hide the backup files that emacs creates?如何隐藏 emacs 创建的备份文件?
【发布时间】:2010-01-07 14:25:48
【问题描述】:

我在使用 vi 很长时间后才开始使用 emacs。 :)

让我烦恼的一件事是,每当我修改文件、保存并退出 emacs 时,我都会看到在名为 filename~ 的同一目录中创建了一个备份文件(如果我编辑的文件是 filename)。

有什么办法可以解决这个问题吗?或者隐藏这些文件?当我对目录执行 ls 操作时,看到大量备份文件非常很烦人。

【问题讨论】:

  • 那些就是我们通常所说的“备份文件”。

标签: emacs


【解决方案1】:

您可以使用以下代码将它们移动到自己的文件夹中:

;; Don't clutter up directories with files~
(setq backup-directory-alist `(("." . ,(expand-file-name
                                    (concat dotfiles-dir "backups")))))

;; Don't clutter with #files either
(setq auto-save-file-name-transforms
      `((".*" ,(expand-file-name (concat dotfiles-dir "backups")))))

或者您可以完全删除它们,如下所示:

(setq make-backup-files nil)
(setq auto-save-default nil)

我个人会谨慎删除它们,因为它们可能会派上用场。进一步的讨论在这里:

我建议查看 emacs-starter-kit,它解决了人们在使用 emacs 时遇到的大量问题,并且被大量使用。

http://github.com/technomancy/emacs-starter-kit/blob/master/starter-kit-misc.el


更新:

对于如何使用这些功能似乎有很多困惑。我稍后会玩一点,但这里有更多信息。注意auto-save-file-name-transforms:

让您指定一系列正则表达式和替换来转换自动保存文件名 [emacs-manual]

所以它不仅仅是添加文件夹名称那么简单。也就是说,从快速的谷歌搜索看来,以下内容可能只是你想要的:

;;; backup/autosave
(defvar backup-dir (expand-file-name "~/.emacs.d/backup/"))
(defvar autosave-dir (expand-file-name "~/.emacs.d/autosave/"))
(setq backup-directory-alist (list (cons ".*" backup-dir)))
(setq auto-save-list-file-prefix autosave-dir)
(setq auto-save-file-name-transforms `((".*" ,autosave-dir t)))

http://www.google.com/codesearch?hl=en&lr=&q=auto-save-file-name-transforms&sbtn=Search

【讨论】:

  • 谢谢!使用名称#filename# 创建的文件是否有类似的东西?
  • 当我使用它时,我得到“符号作为变量的值是 void: dotfiles-dir”
  • 代码取自github链接。要使其正常工作,您需要将 (expand-file-name (concat dotfiles-dir "backups")) 部分替换为您希望文件进入的任何文件夹。如果您需要更多帮助,请尝试以下答案:stackoverflow.com/questions/1199216/…
  • 所以,我将这个添加到我的 emacs 文件中:(setq auto-save-file-name-transforms `((".*" ,"~/.emacs-backups/"))) 但是emacs 正在指定目录中创建名称为“##”的文件。我做错了什么?
  • 太棒了!您更新中的代码完美运行!非常感谢詹姆斯。
【解决方案2】:

~/.emacs 中的以下行将把所有自动保存和备份文件放入/tmp

(setq backup-directory-alist
      `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
      `((".*" ,temporary-file-directory t)))

【讨论】:

  • 这对我来说似乎是个不错的解决方案。这是我用的那个。谢谢。
【解决方案3】:

在您的 .emacs 中:

(setq make-backup-files nil)

编辑: 如果您不熟悉 .emacs 文件,它是一个名为 .emacs 的文件,位于您的用户 $HOME 目录中。如果你还没有,你可以直接创建它,emacs 会在启动时加载它。

【讨论】:

  • 谢谢!使用名称#filename# 创建的文件是否有类似的东西?
  • 我不确定那个。老实说,我会犹豫是否要完全删除它们,因为通常这意味着 emacs 在没有保存缓冲区的情况下关闭。我通常经常保存,所以如果#file#确实存在,则意味着emacs/机器崩溃了;我通常最终使用它来恢复文件。
【解决方案4】:

Here is a link 回答在SuperUsermy response 上回答的相同问题。还有一个名为 Emacs: Don’t create #these# files when not saving modified buffer

的 StackOverflow 问题

为了完整性,正如其他人所说的那样;要停止创建备份文件,请将其放入您的 .emacs

(setq make-backup-files nil)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多