Comment ouvrir des fichiers * .dia en tant que fichiers * .gz?

8

vim proj.dia donne des données binaires.

S'il est renommé, vim l'ouvre en décompressant:

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

Comment rendre l' .diaacte le même que .gz?

Velkan
la source

Réponses:

9

Si nous regardons, /usr/share/vim/vim80/plugin/gzip.vimnous pouvons voir comment le plugin fait cela:

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

Il existe également d'autres extensions de fichiers (bzip2, xz, etc.), mais je les ai supprimées par souci de concision.

Pour ajouter vos propres commandes à cela, vous pouvez l'ajouter à votre fichier 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

Nous devons ajouter l' -S .diaoption permettant gzipde lire et d'écrire dans des *.diafichiers plutôt que dans des *.gzfichiers. Autant que je puisse voir, les plates-formes les plus courantes (Linux, {Free, Open} BSD, OSX) prennent en charge cette option, mais certaines peuvent ne pas (dans ce cas, vous devrez écrire un script wrapper pour déplacer le fichier avant de décompresser et après compression).

Martin Tournoij
la source