2011-09-16 17 views
8

Vim tự động mở rộng .gz tệp khi tôi mở chúng, điều này thật tuyệt. Tuy nhiên, nó không nhận dạng được .GZ (chữ hoa) theo cách tương tự. Rất tiếc, tôi không thể thay đổi phần mở rộng của các tệp mà tôi đang làm việc vì nhiều lý do khác nhau. Có một cách thực sự đơn giản để đăng ký với VIM rằng .GZ giống với .gz tệp không?VIM có thể giải nén tự động các tệp gzip với phần mở rộng tệp khác không?

Trả lời

10

Đặt này vào vimrc của bạn:

augroup gzip 
au BufReadPre  *.GZ setlocal bin 
au BufRead  *.GZ call gzip#read("gzip -dn") 
au BufWritePost *.GZ call gzip#write("gzip") 
au FileAppendPost *.GZ call gzip#write("gzip") 
au FileAppendPre *.GZ call gzip#appre("gzip -dn") 
au FileReadPost *.GZ call gzip#read("gzip -dn") 
au FileReadPre *.GZ setlocal bin 
au FileWritePost *.GZ call gzip#write("gzip") 
augroup END 

Nếu bạn muốn biết những gì autocmds đã được kích hoạt cho các tập tin gz bạn có thể làm:

:redir @x 
:au 
:redir END 
"xp 
/\.gz 

Điều này cho thấy autocmds gzip liên quan đang ở trong nhóm gzip. Sau đó, :au gzip cung cấp danh sách nhỏ gọn hơn.

tham khảo:

:help :autocmd 
:help :augroup 

autocmds gốc là trong plugin/gzip.vim trong thời gian chạy vim của bạn. Bạn có thể biết điều đó với :verbose au gzip

+1

ý tưởng hay về augroup. Đừng quên tùy chọn 'bin', mặc dù – sehe

+0

@sehe: câu trả lời được cập nhật với danh sách đầy đủ các autocmds (cho các bộ đệm mới mà không có các tệp hiện có, và cách tự lấy danh sách) – Benoit

+0

+1 công việc tốt, câu trả lời tốt – sehe