VIM: 当被 tar 插件提取时将文件设置为只读

VIM: Set files to read-only when extracted by tar plugin

Vim 有 tarPlugin.vim 定义了一组 autocmd 允许浏览 tar 文件。我喜欢这样,但我希望 tar 文件的内容默认为只读,而不是允许我编辑它们。 (出于各种原因,我有时会在阅读时进行编辑,并且我有一个自动保存插件。)

有没有办法使 vim 从 tar 中提取的文件默认为只读?

我在 .vimrc:

中尝试过的内容
autocmd! BufReadPre tarfile::*/* set ro
autocmd! BufNew tarfile::*/* set ro

所以,我很接近,但是 tar 插件如何设置文件名有一个怪癖,这意味着缓冲区在创建时没有 tarfile:: 名称或在读入内容之前。(详情请参阅 $VIMRUNTIME/autoload/tar.vim 中的 tar#Read。)实际要监视的事件是 BufFilePost,因此工作集 autocmds 在 Linux 上是:

autocmd BufFilePost tarfile::*/* set ro
autocmd BufFilePost tarfile::* set ro

*/* 是我从 tarPlugin.vim 中得到的另一个怪癖。显然只是 * 与其中 / 的文件路径不匹配,你需要 both 在 Linux (和其他 UNIX-y 系统)上,但是 tarPlugin.vim 也让我相信你只需要 Windows 上的 tarfile::* 模式,但是 YMMV.