Jawaban:
Jika kita melihat, /usr/share/vim/vim80/plugin/gzip.vim
kita dapat melihat bagaimana plugin melakukan ini:
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
Ada ekstensi file lain di sini juga (bzip2, xz, dll.) Tetapi saya menghapusnya demi singkatnya.
Untuk menambahkan perintah Anda sendiri ke ini, Anda bisa menambahkan ini ke file vimrc Anda:
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
Kita perlu menambahkan -S .dia
opsi untuk bisa gzip
membaca dan menulis ke *.dia
file, bukan *.gz
file. Sejauh yang saya bisa lihat platform paling umum (Linux, {Gratis, Buka} BSD, OSX) mendukung opsi ini, tetapi beberapa mungkin tidak (dalam hal ini Anda harus menulis skrip pembungkus untuk memindahkan file sebelum dekompresi dan setelah mengompresi).