回答:
見てみると/usr/share/vim/vim80/plugin/gzip.vim
、プラグインがこれをどのように行うかがわかります。
augroup gzip
" Remove all gzip autocommands
au!
" Enable editing of gzipped files.
" The functions are defined in autoload/gzip.vim.
"
" Set binary mode before reading the file.
" Use "gzip -d", gunzip isn't always available.
autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma,*.xz,*.lz setlocal bin
autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn")
autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip")
autocmd FileAppendPre *.gz call gzip#appre("gzip -dn")
autocmd FileAppendPost *.gz call gzip#write("gzip")
augroup END
ここにも他のファイル拡張子(bzip2、xzなど)がありますが、簡潔にするために削除しました。
これに独自のコマンドを追加するには、これをvimrcファイルに追加します。
augroup gzip_local
autocmd!
autocmd BufReadPre,FileReadPre *.dia setlocal bin
autocmd BufReadPost,FileReadPost *.dia call gzip#read("gzip -dn -S .dia")
autocmd BufWritePost,FileWritePost *.dia call gzip#write("gzip -S .dia")
autocmd FileAppendPre *.dia call gzip#appre("gzip -dn -S .dia")
autocmd FileAppendPost *.dia call gzip#write("gzip -S .dia")
augroup END
ファイルではなく、ファイルを読み書き-S .dia
するためのオプションを追加する必要があります。ほとんどの一般的なプラットフォーム(Linux、{Free、Open} BSD、OSX)がこのオプションをサポートしているのを確認できるのと同じくらいですが、一部はサポートしていない場合があります(その場合、解凍前と解凍後にファイルを移動するラッパースクリプトを記述する必要があります。圧縮)。gzip
*.dia
*.gz