Come aprire i file * .dia come file * .gz?


8

vim proj.dia fornisce dati binari.

Se rinominato, vim lo apre decomprimendo:

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

Come rendere l' .diaatto uguale a .gz?

Risposte:


9

Se guardiamo /usr/share/vim/vim80/plugin/gzip.vimpossiamo 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 .diaopzione per gzipleggere e scrivere sui *.diafile anziché sui *.gzfile. 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).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.