我可以配置 vim 在编辑 git repo 中存在的文件时设置 noswapfile 吗

我可以配置 vim 在编辑 git repo 中存在的文件时设置 noswapfile 吗

如果文件存在于 git repo 中,我可以使用哪些 vim API 和工具来禁用给定缓冲区的 vim swapfile(隐藏的恢复文件)?

在 git repos 中,我也想启用自动保存插件,因为我不必担心意外更改被保存。但对于 git repos 之外的其他缓冲区,我不希望自动保存意外修改文件,并且我想保留 vim 恢复文件。

我认为这是一个很好的插件编程任务,可以熟悉 vim 插件编程,但如果有人知道我应该采取什么方法,我将不胜感激

答案1

禁用交换文件

对于现有缓冲区,您可以:setlocal noswapfile。这将删除任何现有缓冲区并关闭恢复。打开新缓冲区时,您也可以直接添加:noswapfile edit ...

检测 Git 存储库

如果你总是从 Git 根目录打开 Vim,那么这可以很简单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

为了运行检测,我们需要在每个打开的文件上运行自动命令:

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

相关内容