VIM 中的“backupdir”子文件夹

fie*_*sor 5 vim

目前我的 VIM 配置文件中有这个:

set backupdir=$HOME/Documents/vim-backup/
Run Code Online (Sandbox Code Playgroud)

这大部分工作正常,但我对它如何将所有文件放入同一目录感到困扰。例如,如果一个人要同时编辑多个 README.txt 文件,那将特别烦人,因为它们的备份都会相互破坏。

是否可以在 backupdir 的子目录中进行 VIM 存储备份?例如,如果我正在编辑C:\Users\patrick\Desktop\project-1\foo.c,那么我希望备份文件进入类似C:\Users\patrick\Documents\vim-backup\Users\patrick\Desktop\project-1\foo.c

FDi*_*off 1

你可以做这样的事情。

set backupdir=$HOME/.vim/backup

let s:backupdir = &backupdir
function! SetBackupDir()
    exec 'set backupdir=' . s:backupdir . expand('%:p:h')
    if !isdirectory(&backupdir)
        call mkdir(&backupdir, "p")
    endif
endfunction 
Run Code Online (Sandbox Code Playgroud)

这会在 vim 保存文件之前自动更改backupdir设置。$HOME/.vim/backup/path/to/filedirectory然后,Vim 会将备份文件写入此目录,并以~. 如果您想更改,~可以使用更改backupext设置。如果该目录不存在,则会创建该目录。