Bagaimana cara membuka file * .dia sebagai file * .gz?


8

vim proj.dia memberikan data biner.

Jika diubah namanya, vim membukanya dengan membuka ritsleting:

$ mv proj.dia proj.dia.gz
$ vim proj.dia.gz

Bagaimana caranya agar .diaaktingnya sama .gz?

Jawaban:


9

Jika kita melihat, /usr/share/vim/vim80/plugin/gzip.vimkita 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 .diaopsi untuk bisa gzipmembaca dan menulis ke *.diafile, bukan *.gzfile. 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).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.