Respuestas:
Si miramos /usr/share/vim/vim80/plugin/gzip.vim
podemos ver cómo el plugin hace esto:
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
Aquí también hay otras extensiones de archivo (bzip2, xz, etc.) pero las eliminé por razones de brevedad.
Para agregar sus propios comandos a esto, puede agregar esto a su archivo 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
Necesitamos agregar la -S .dia
opción para gzip
leer y escribir en *.dia
archivos, en lugar de *.gz
archivos. Tan cerca como puedo ver, las plataformas más comunes (Linux, {Free, Open} BSD, OSX) admiten esta opción, pero es posible que algunas no lo hagan (en cuyo caso tendrá que escribir un script de contenedor para mover el archivo antes de descomprimirlo y después apresamiento).