如何配置Vim备份目录

7

我不喜欢Vim在我的工作目录中生成备份和交换文件,但是为了避免程序崩溃,我不想关闭这些文件。我发现添加以下行:

set backupdir=./.backup
set directory=./.backup

在Vim的.vimrc配置文件中,告诉Vim将这些文件放在一个隐藏目录中,这很好,但是如果我不手动创建这些隐藏目录,似乎Vim就不会创建备份或交换文件。我在其他地方看到过类似下面的行:
set backupdir=./.backup,/tmp,.
set directory=./.backup,/tmp,.

我认为这会告诉Vim使用其他位置,如/tmp,如果它无法使用./.backup,但是Vim似乎并没有这样做。

我该如何让Vim:

  1. 创建所需的./backup目录,或者
  2. 如果./backup目录不存在,则使用工作目录?

这是一篇与此相关的不错文章:https://jdhao.github.io/2019/11/16/nvim_file_backup/ - xeruf
4个回答

5

我在我的 .vimrc 文件中加入了以下内容,用于在目录不存在时创建目录:

silent !mkdir ~/.vim/backups > /dev/null 2>&1

我相信你可以根据你的需要进行修改,最有可能的情况是:

silent !mkdir ./.backup > /dev/null 2>&1

我创建了一个插件来完成这个任务 https://github.com/dezza/vimdirs.vim/blob/master/plugin/vimdirs.vim 它只是一个概念验证,但它是可配置的。 - dza
2
使用 mkdir -p 命令,你就不需要忽略错误了 ;) - xeruf

2
将以下内容添加到您的~/.vimrc文件中:
set backup
if !isdirectory($HOME."/.vim/backupdir")
    silent! execute "!mkdir ~/.vim/backupdir"
endif
set backupdir=~/.vim/backupdir
"not generate .swap
set noswapfile

您会在您的目录~/.vim/backupdir中找到备份。

1

这对我有效。

:h 'backupdir':h 'directory' 看起来表明您的解决方案应该能够工作。

检查方法如下:

  1. set directory=./.backup,/tmp,. 添加到您的 ~/.vimrc 文件中。
  2. 关闭 Vim。
  3. 确保 ~/.backup 不存在。
  4. 在 Vim 中重新打开您的 ~/.vimrc 文件。
  5. 检查在 /tmp 目录中是否存在 .vimrc.swp。 (ls -la /tmp | grep .vimrc.swp)

0
使用mkdir -p,它不会在目录已存在时报错,并且可以创建路径,因此您可以执行以下操作:
mkdir -p .vim/backups

它将始终创建目录,从不抱怨。没有麻烦,没有烦恼。


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