我长期使用vi编辑器,最近开始使用emacs。
有一件事情让我烦恼,每当我修改一个文件并保存后退出emacs,同一目录下会出现一个名为filename~
(如果我编辑的文件名为filename
)的备份文件。
有没有办法摆脱这个问题?或者隐藏这些备份文件?当我在目录中执行ls命令时,看到大量备份文件非常烦人。
我长期使用vi编辑器,最近开始使用emacs。
有一件事情让我烦恼,每当我修改一个文件并保存后退出emacs,同一目录下会出现一个名为filename~
(如果我编辑的文件名为filename
)的备份文件。
有没有办法摆脱这个问题?或者隐藏这些备份文件?当我在目录中执行ls命令时,看到大量备份文件非常烦人。
您可以使用以下代码将它们移动到自己的文件夹中:
;; 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
(expand-file-name (concat dotfiles-dir "backups"))
这一部分替换成你想要存储文件的文件夹路径。如果你需要更多帮助,请参考这个答案:https://dev59.com/IUjSa4cB1Zd3GeqPHKZ5#1199335 - James Brooks~/.emacs
中的代码将把所有自动保存和备份文件放在/tmp
中:(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
(setq make-backup-files nil)
编辑:
如果您不熟悉 .emacs 文件,它是一个名为 .emacs
的文件,位于您的用户 $HOME 目录中。如果您还没有这个文件,您可以创建它,Emacs 将在启动时加载它。
这里是一个链接,指向在SuperUser和我的回答上回答同样问题的页面。还有一个StackOverflow问题,标题为Emacs:不保存修改的缓冲区时不要创建#these#文件
为了完整起见,正如其他人所述,要停止创建备份文件,请将以下内容放入您的.emacs
文件中。
(setq make-backup-files nil)