Risposte:
Se guardiamo /usr/share/vim/vim80/plugin/gzip.vim
possiamo vedere come il plugin fa questo:
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
Ci sono anche altre estensioni di file qui (bzip2, xz, ecc.) Ma le ho rimosse per brevità.
Per aggiungere i tuoi comandi a questo, puoi aggiungerlo al tuo file 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
Dobbiamo aggiungere l' -S .dia
opzione per gzip
leggere e scrivere sui *.dia
file anziché sui *.gz
file. Per quanto posso vedere le piattaforme più comuni (Linux, {Free, Open} BSD, OSX) supportano questa opzione, ma alcune potrebbero non (nel qual caso dovrete scrivere uno script wrapper per spostare il file prima di decomprimere e dopo compressione).