Какие API и средства vim я могу использовать для отключения vim swapfile (скрытого файла восстановления) для данного буфера, если файл существует в git-репо?

В git-репозиториях я также хочу включить плагин автосохранения, поскольку мне не нужно беспокоиться о сохранении случайных изменений. Но для других буферов вне репозитория git я не хочу, чтобы автосохранение могло случайно изменить файлы, и я хочу сохранить файл восстановления vim.

Я полагаю, что это хорошая задача программирования плагинов, чтобы познакомиться с программированием плагинов vim, но если кто-то знает, какой подход я должен использовать, я был бы признателен

1 ответ1

1

Отключение файла подкачки

Для существующих буферов вы можете :setlocal noswapfile . Это удалит любой существующий и выключит восстановление. Открывая новые буферы, вы также можете напрямую :noswapfile edit ...

Обнаружение Git-репозитория

Если вы всегда открываете Vim из корневого каталога Git, это может быть так же просто, как isdirectory('.git') . Иначе, вам также нужно проверить родительские каталоги:

let gitDirspec = finddir('.git', '.;')
let isGitRepo = !empty(gitDirspec)

Кроме того, плагин vcscommand.vim обеспечивает обнаружение для различных типов систем контроля версий (среди них Git):

let isGitRepo = VCSCommandGetVCSType('') ==? 'git'

Подключить его

Если у вас есть статический список репозиториев Git, вы можете поместить пути непосредственно в :autocmd:

:autocmd BufNew,BufRead /path/to/repo1/**,/path/to/repo2/** setlocal noswapfile

Чтобы запустить обнаружение, нам нужно запустить autocmds для каждого открытого файла:

:autocmd BufNew,BufRead * if VCSCommandGetVCSType('') ==? 'git' | setlocal noswapfile | endif

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .