Làm cách nào để mở tệp * .dia dưới dạng tệp * .gz?


8

vim proj.dia cung cấp dữ liệu nhị phân.

Nếu được đổi tên, vim mở nó bằng cách giải nén:

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

Làm thế nào để thực hiện .diahành động giống như .gz?

Câu trả lời:


9

Nếu chúng ta nhìn vào /usr/share/vim/vim80/plugin/gzip.vimchúng ta có thể thấy các plugin làm điều này như thế nào:

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

Cũng có các phần mở rộng tập tin khác ở đây (bzip2, xz, v.v.) nhưng tôi đã loại bỏ chúng vì lý do ngắn gọn.

Để thêm các lệnh của riêng bạn vào đây, bạn có thể thêm lệnh này vào tệp vimrc của mình:

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

Chúng ta cần thêm -S .diatùy chọn gzipđể đọc và ghi vào *.diatệp, thay vì *.gztệp. Gần như tôi có thể thấy hầu hết các nền tảng phổ biến (Linux, {Free, Open} BSD, OSX) đều hỗ trợ tùy chọn này, nhưng một số có thể không (trong trường hợp đó bạn sẽ phải viết một tập lệnh bao bọc để di chuyển tệp trước khi giải nén và sau nén).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.