3

我喜欢 emacs,但有些事情一直困扰着我。当我通过tramp编辑文件时,我似乎无法让emacs存储文件的本地备份。

目前,当我编辑本地文件时,一组旧版本存储在 /tmp/myusername/emacs_backup 文件夹中。但是,当我通过流浪汉进行 FTP 传输时,旧版本不会存储在那里(我假设它正在尝试远程存储它们?)。

这是我的 .emacs 设置:

(defvar user-temporary-file-directory  
  (concat "/tmp/" user-login-name "/emacs_backup/"))  
(make-directory user-temporary-file-directory t)  
(setq make-backup-files t)  
(setq backup-by-copying t)  
(setq version-control t)  
(setq delete-old-versions t)  
(setq kept-new-versions 10)  
(setq backup-directory-alist `(("." . ,user-temporary-file-directory)))  
(setq tramp-backup-directory-alist backup-directory-alist)  
(setq tramp-auto-save-directory user-temporary-file-directory)  
(setq auto-save-list-file-prefix
      (concat user-temporary-file-directory ".auto-saves-"))  
(setq auto-save-file-name-transforms  
      `((".*" ,user-temporary-file-directory t)))

我不在乎 tramp su 编辑是否也存储在 tmp 文件夹中 - 我认为越多越好。任何帮助是极大的赞赏!

4

4 回答 4

3

文档tramp-backup-directory-alist

(setq tramp-backup-directory-alist 备份-目录-alist)

为其主机上的 Tramp 文件提供与本地文件策略相同的备份策略。

我将其解释为在远程机器(“他们的主机”)上备份流浪文件。查看这里的实现tramp.el也是默认实现(如果tramp-backup-directory-alist未设置,backup-directory-alist则为)。

Tramp 假设远程文件的备份也应该始终是远程的,并在进行备份之前显式地预先添加方法/用户/主机位。如果您想更改行为,我认为您必须建议tramp-handle-find-backup-file-name调整文件名(因此它是有效的本地文件名)并与backup-directory-alist.

FWIW:从长远来看,将备份放在临时文件目录中并没有太大帮助。“临时”有点违背备份的目的。

于 2010-10-17T19:18:33.940 回答
2

我也试图在本地存储备份。我提交了一个错误,因为我认为tramp-backup-directory-alist它已经坏了。在与 Michael Albinus 交谈后,我发现我误解了tramp-backup-directory-alist,这是一种存储远程文件远程备份的方法,我应该这样做:

(add-to-list 'backup-directory-alist
             (cons tramp-file-name-regexp "/my/local/backup/"))
于 2017-10-30T17:43:31.530 回答
1

我能够找到一种解决方法(我尝试通过 tramp-backup-directory-alist 进行设置 - 但显然有一个 with tramp 能够在本地保存远程缓冲区)。我没有使用内置备份,而是找到了由 Benjamin Rutt 编写的名为: backup-each-save.el的 elisp 脚本。

于 2011-01-05T20:24:58.233 回答
1

重新定义trump-handle-find-backup-file-name对我有用。它摆脱了想要将备份保存在远程服务器上的行为。

(defun tramp-handle-find-backup-file-name (filename)
      "Like `find-backup-file-name' for Tramp files."
      (with-parsed-tramp-file-name filename nil
        (tramp-run-real-handler 'find-backup-file-name (list filename))))
于 2016-03-28T16:44:10.613 回答