Wie öffne ich * .dia-Dateien als * .gz-Dateien?

8

vim proj.dia gibt binäre Daten.

Wenn umbenannt, öffnet vim es durch Entpacken:

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

Wie kann man die .diaHandlung so machen wie .gz?

Velkan
quelle

Antworten:

9

Wenn wir uns ansehen /usr/share/vim/vim80/plugin/gzip.vim, können wir sehen, wie das Plugin dies macht:

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

Es gibt hier auch andere Dateierweiterungen (bzip2, xz usw.), aber ich habe diese der Kürze halber entfernt.

Um Ihre eigenen Befehle hinzuzufügen, können Sie diese zu Ihrer vimrc-Datei hinzufügen:

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

Wir müssen die -S .diaOption hinzufügen gzip, um *.diaDateien lesen und schreiben zu können, anstatt *.gzDateien. Soweit ich sehen kann, unterstützen die meisten gängigen Plattformen (Linux, {Free, Open} BSD, OSX) diese Option, einige jedoch möglicherweise nicht (in diesem Fall müssen Sie ein Wrapper-Skript schreiben, um die Datei vor und nach dem Dekomprimieren zu verschieben Komprimieren).

Martin Tournoij
quelle