Câu trả lời:
Nếu chúng ta nhìn vào /usr/share/vim/vim80/plugin/gzip.vim
chúng ta có thể thấy các plugin làm điều này như thế nào:
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
Cũng có các phần mở rộng tập tin khác ở đây (bzip2, xz, v.v.) nhưng tôi đã loại bỏ chúng vì lý do ngắn gọn.
Để thêm các lệnh của riêng bạn vào đây, bạn có thể thêm lệnh này vào tệp vimrc của mình:
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
Chúng ta cần thêm -S .dia
tùy chọn gzip
để đọc và ghi vào *.dia
tệp, thay vì *.gz
tệp. Gần như tôi có thể thấy hầu hết các nền tảng phổ biến (Linux, {Free, Open} BSD, OSX) đều hỗ trợ tùy chọn này, nhưng một số có thể không (trong trường hợp đó bạn sẽ phải viết một tập lệnh bao bọc để di chuyển tệp trước khi giải nén và sau nén).