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
,因此工作集 autocmd
s 在 Linux 上是:
autocmd BufFilePost tarfile::*/* set ro
autocmd BufFilePost tarfile::* set ro
*/*
是我从 tarPlugin.vim
中得到的另一个怪癖。显然只是 *
与其中 /
的文件路径不匹配,你需要 both 在 Linux (和其他 UNIX-y 系统)上,但是 tarPlugin.vim
也让我相信你只需要 Windows 上的 tarfile::*
模式,但是 YMMV.
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
,因此工作集 autocmd
s 在 Linux 上是:
autocmd BufFilePost tarfile::*/* set ro
autocmd BufFilePost tarfile::* set ro
*/*
是我从 tarPlugin.vim
中得到的另一个怪癖。显然只是 *
与其中 /
的文件路径不匹配,你需要 both 在 Linux (和其他 UNIX-y 系统)上,但是 tarPlugin.vim
也让我相信你只需要 Windows 上的 tarfile::*
模式,但是 YMMV.