Сводка: Я пытаюсь заставить Vim хранить резервную копию файлов, swap файлов и отменить файлов в каталогеотносительно рабочего каталога, чтобы я мог переместить эти файлы с рабочим каталогом (например, на USB-накопителе).
Справочная информация: Я написал функцию, которая устанавливает backupdir
,directory
и undodir
настройки при первом запуске Vim.Я установил в настройках первоначальный поиск относительных путей в рабочем каталоге сначала (который будет на USB-накопителе), затем поиск централизованного каталога в ~/vim/scratch_files/
, централизованномкаталог, который я бы предпочел не использовать, если доступен относительный путь.
Однако, независимо от того, какие относительные пути я указал, Vim просто настаивает на использовании централизованного пути, будь то тестирование на установках Linux или Windows Vim.
Исследование: Я проверил файлы справки (в :help backupdir
), страницы Vim Fandom и Stack Exchange, искал решения и не смог найти ничего, что могло бы его сделать.работа.
ПРИМЕР: Вот минимально рабочий пример того, о чем я говорю.У меня есть строка в моем .vimrc, которая добавляет файл, например, scratchfiles.vim
, в переменную runtimepath со следующим кодом:
function! SetLocalScratchFiles()
" Turn the settings on
set backup
set writebackup
set swapfile
if has("win32") || has("win64")
" The // gets replaced with a %-substituted path for a filename in the destination scratch file in Windows as per :h backupdir (i.e., C%%path%to%file.txt.swp)
set backupdir^=.\\_scratch\\backup//,.\\.scratch\\backup//,$HOME\\.vim\\scratch_files\\backup//,.
set directory^=.\\_scratch\\swap//,.\\.scratch\\swap//,$HOME\\.vim\\scratch_files\\swap//,.
else
set backupdir^=./_scratch/backup//,./.scratch/backup//,~/.vim/scratch_files/backup//,.
set directory^=./_scratch/swap//,./.scratch/swap//,~/.vim/scratch_files/swap//,.
endif
" Undo Directory:
if has('persistent_undo')
if has("win32") || has("win64")
set undodir^=.\\_scratch\\undo//,.\\.scratch\\undo//,$HOME\\.vim\\scratch_files\\undo//,.
else
set undodir^=./_scratch/undo//,./.scratch/undo//,~/.vim/scratch_files/undo//,.
endif
set undofile
endif
endfunction
autocmd VimEnter * call SetLocalScratchFiles()
Предполагается, что (а) будет искать локальный каталог относительнотекущий рабочий каталог с именем ./_scratch/
для подкаталогов / backup /, / swap / и / undo /.Затем, если это не найдено, (b) ищите те же самые подкаталоги в ./.scratch/
.ТОГДА, если это не найдено, используйте ~/.vim/scratch_files/
.
ВОПРОС:
Проблема в том, что независимо от того, сколько различных типов относительных путей я передаю этим настройкам, Vimвсегда выбирает один централизованный каталог.Как мне сделать так, чтобы сначала распознал эти относительные пути ?Возможно, что-то не так с тем, как я отформатировал пути?