In my vimrc I have:

    set backupdir=~/.cache/vim/backup |call mkdir(&backupdir, 'p', 0o700)
    set undodir=~/.cache/vim/undo     |call mkdir(&undodir,   'p', 0o700)

This stores a backup file in `~/.cache/vim/backup` on every write, which is useful sometimes if I accidentally remove something, or remove something that I ended up wanting to have later anyway.

The problem is that the filename is just the "basename", that is, both `~/one/README.md` and `~/two/README.md` get written as `~/.cache/vim/backup/README.md`.

This problem doesn't exist for `undodir`, which stores it as two files, with the full pathname:

    ~/.vim/cache/undo/%home%martin%one%README.md
    ~/.vim/cache/undo/%home%martin%two%README.md

How can I keep a unique copy for every pathname, similar to what `undodir` does by default?