Réponses:
Si nous regardons, /usr/share/vim/vim80/plugin/gzip.vim
nous pouvons voir comment le plugin fait cela:
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
Il existe également d'autres extensions de fichiers (bzip2, xz, etc.), mais je les ai supprimées par souci de concision.
Pour ajouter vos propres commandes à cela, vous pouvez l'ajouter à votre fichier 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
Nous devons ajouter l' -S .dia
option permettant gzip
de lire et d'écrire dans des *.dia
fichiers plutôt que dans des *.gz
fichiers. Autant que je puisse voir, les plates-formes les plus courantes (Linux, {Free, Open} BSD, OSX) prennent en charge cette option, mais certaines peuvent ne pas (dans ce cas, vous devrez écrire un script wrapper pour déplacer le fichier avant de décompresser et après compression).