我该如何隐藏emacs创建的备份文件?

15

我长期使用vi编辑器,最近开始使用emacs。

有一件事情让我烦恼,每当我修改一个文件并保存后退出emacs,同一目录下会出现一个名为filename~ (如果我编辑的文件名为filename)的备份文件。

有没有办法摆脱这个问题?或者隐藏这些备份文件?当我在目录中执行ls命令时,看到大量备份文件非常烦人。


2
这些通常被称为“备份文件”。 - High Performance Mark
4个回答

21

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

;; 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#创建的文件是否有类似的东西? - n1kh1lp
1
当我使用它时,会出现“符号的值作为变量是空的:dotfiles-dir”的错误信息。 - Chris Conway
代码来自于Github链接。为了让它正常工作,你需要将(expand-file-name (concat dotfiles-dir "backups"))这一部分替换成你想要存储文件的文件夹路径。如果你需要更多帮助,请参考这个答案:https://dev59.com/IUjSa4cB1Zd3GeqPHKZ5#1199335 - James Brooks
所以,我将以下内容添加到我的emacs文件中: (setq auto-save-file-name-transforms `((".*" ,"~/.emacs-backups/")))但是emacs在指定的目录中创建名为“##”的文件。我做错了什么? - n1kh1lp
太棒了!你更新的代码完美运行!非常感谢,詹姆斯。 - n1kh1lp

5
以下在~/.emacs中的代码将把所有自动保存和备份文件放在/tmp中:
(setq backup-directory-alist
      `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
      `((".*" ,temporary-file-directory t)))

看起来这对我是个好的解决方案。这就是我使用的那个。谢谢。 - Stephane Rolland

0
在你的 .emacs 文件中:
(setq make-backup-files nil)

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


谢谢!针对以名称 #filename# 创建的文件是否有类似的东西? - n1kh1lp
我不确定那个。说实话,我会犹豫是否完全删除它们,因为通常这意味着Emacs在没有保存缓冲区的情况下关闭了。我通常经常保存,所以如果#file#存在,这意味着Emacs /机器崩溃了;我通常会使用它来恢复文件。 - Rob Hruska

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接