¿Cómo abrir archivos * .dia como archivos * .gz?


8

vim proj.dia da datos binarios.

Si se cambia el nombre, vim lo abre descomprimiendo:

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

¿Cómo hacer que el .diaacto sea igual .gz?

Respuestas:


9

Si miramos /usr/share/vim/vim80/plugin/gzip.vimpodemos ver cómo el plugin hace esto:

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

Aquí también hay otras extensiones de archivo (bzip2, xz, etc.) pero las eliminé por razones de brevedad.

Para agregar sus propios comandos a esto, puede agregar esto a su archivo 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

Necesitamos agregar la -S .diaopción para gzipleer y escribir en *.diaarchivos, en lugar de *.gzarchivos. Tan cerca como puedo ver, las plataformas más comunes (Linux, {Free, Open} BSD, OSX) admiten esta opción, pero es posible que algunas no lo hagan (en cuyo caso tendrá que escribir un script de contenedor para mover el archivo antes de descomprimirlo y después apresamiento).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.