pi_zip.txt ForVim version 9.2. Last change: 2026 Feb 14+====================+| Zip FileInterface |+====================+Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> (remove NOSPAM from Campbell's email first)Copyright: Copyright (C) 2005-2015 CharlesE Campbellzip-copyrightThe VIM LICENSE (seecopyright) applies to the files in thispackage, including zipPlugin.vim, zip.vim, and pi_zip.vim. except use"zip.vim" instead of "VIM". Like anything else that's free, zip.vimand its associated files are provided *asis* and comes with nowarranty of any kind, either expressed or implied. No guarantees ofmerchantability. No guarantees of suitability for any purpose. Byusing this plugin, you agree that in no event will thecopyrightholder be liable for any damages resulting from the use of thissoftware. Useat your own risk!==============================================================================1.Contentszipzip-contents 1. Contents................................................zip-contents 2. Usage...................................................zip-usage 3. Additional Extensions...................................zip-extension 4. History.................................................zip-history==============================================================================2. Usagezip-usagezip-manual When one editsa *.zip file, thisplugin will handle displayinga contents page.Selecta file to edit by moving the cursor atop the desired file, then hit the<return> key. After editing, one may also write to the file. Currently, one may not makea new file inzip archives via the plugin. COMMANDSzip-xx: extracta listed file when the cursoris atopit OPTIONSg:zip_nomax If this variable exists andis true, the filewindow will not be automatically maximized when opened.g:zip_shq Different operating systems may use one or more shells to execute commands. Zip will try to guess the correct quoting mechanism to allow spaces and whatnot in filenames; however, ifitis incorrectly guessing thequote to use for your setup, you may useg:zip_shq which by defaultisa singlequote underUnix (') anda doublequote under Windows("). If you'd rather have no quotes, simply setg:zip_shq to the emptystring (let g:zip_shq= "") in your <.vimrc>.g:zip_unzipcmd Use this option to specify the program which does the duty of "unzip". It's used during browsing. By default:let g:zip_unzipcmd= "unzip"g:zip_zipcmd Use this option to specify the program which does the duty of "zip". It's used during thewriting (updating) ofa file already inazip file; by default:let g:zip_zipcmd= "zip"g:zip_extractcmd This optionspecifies the program (and anyoptions needed) used to extracta file fromazip archive. By default,let g:zip_extractcmd= g:zip_unzipcmdg:zip_exec For security reasons, one may prevent that Vim runs executables automatically when openinga buffer. This option (default: "1") can be used to prevent executing the "unzip" command when set to "0":let g:zip_exec=0 FALLBACK TO POWERSHELL CORE Thisplugin will first attempt to use the (more capable) GNU zip/unzip commands. If these commands are not available or fail, and the useris using PowerShell Core (i.e., the'shell' option matches "pwsh"), theplugin will fall back toa PowerShell Core cmdlet. The PowerShell Core cmdlets are limited: they cannot write or extract files within subdirectories ofazip archive. The advantage, however,is that no separate unzip binary needs to be installed. PREVENTING LOADING If for some reason youdo not wish to use vim to examine zipped files, you mayput the following twovariables into your <.vimrc> to prevent thezipplugin from loading:let g:loaded_zipPlugin= 1let g:loaded_zip = 1==============================================================================3. Additional Extensionszip-extension Apparently there area number of archivers which generatezip files that don't use the .zip extension (.jar, .xpi, etc). To handle such files, placea line in your <.vimrc> file:au BufReadCmd *.jar,*.xpi call zip#Browse(expand("<amatch>")) One can simply extend this line to accommodate additional extensions that should be treatedaszip files. Alternatively, one may changeg:zipPlugin_ext in one's .vimrc. Currently (as of October 2025)it holds: let g:zipPlugin_ext='*.aar,*.apk,*.celzip,*.crtx,*.docm,*.docx, \ *.dotm,*.dotx,*.ear,*.epub,*.gcsx,*.glox,*.gqsx,*.ja,*.jar,*.kmz, \ *.odb,*.odc,*.odf,*.odg,*.odi,*.odm,*.odp,*.ods,*.odt,*.otc,*.otf, \ *.otg,*.oth,*.oti,*.otp,*.ots,*.ott,*.oxt,*.pkpass,*.potm,*.potx, \ *.ppam,*.ppsm,*.ppsx,*.pptm,*.pptx,*.sldx,*.thmx,*.vdw,*.war,*.whl, \ *.wsz, *.xap,*.xlam,*.xlsb,*.xlsm,*.xlsx,*.xltm,*.xltx,*.xpi,*.zip'==============================================================================4. Historyzip-history {{{1 unreleased: Sep 19, 2025 * support PowerShell Core Jul 12, 2025 * drop ../ on write to prevent path traversal attacks Mar 11, 2025 * handle filenames with leading '-' correctly Aug 21, 2024 * simplify condition to detectMS-Windows Aug 18, 2024 * correctly handle special globbing chars Aug 05, 2024 * clean-up and makeit work with shellslash on Windows Aug 05, 2024 * workaround for the FreeBSD's unzip Aug 04, 2024 *escape '[' in name of file to be extracted Jul 30, 2024 * fix opening remote zipfile Jul 24, 2024 * usedelete() function Jul 23, 2024 * fix 'x' command Jun 16, 2024 * handlewhitespace on Windows properly (#14998) v33 Dec 07, 2021 * *.xlam mentioned twice in zipPlugin v32 Oct 22, 2021 * to avoid an issue witha vim 8.2 patch, zipfile: has been changed to zipfile://. This often shows upas zipfile:/// with zipped files that are root-based. v29 Apr 02, 2017 * (Klartext) reported that an encryptedzip file could opened but the swapfile held unencrypted contents. The solutionis to edit the contents ofazip file using the:noswapfile modifier. v28 Oct 08, 2014 * changed the sanity checks for executables to reflect the command actually to be attempted in zip#Read() and zip#Write() * added the extraction ofa file capability Nov 30, 2015 * added *.epub to theg:zipPlugin_extlist Sep 13, 2016 * added *.apk to theg:zipPlugin_extlist and sorted the suffices. v27 Jul 02, 2013 * sanity check: zipfilemust have "PK"as its first two bytes. * modified to allow zipfile: entries inquickfix lists v26 Nov 15, 2012 * (Jason Spiro) provideda lot of new extensions that are synonyms for .zip v25 Jun 27, 2011 * using keepj with unzip-Z (consistent with the-p variant) * (Ben Staniford) now useshas("win32unix") && executable("cygpath") before converting to cygwin-style paths v24 Jun 21, 2010 * (Cédric Bosdonnat) unzip seems to need its filenames fnameescape'das wellas shellquote'd * (Motoya Kurotsu) inserted keepj before 0d to protect jumplist v17 May 09, 2008 * arno caughta security bug v15 Sep 07, 2007 * &shq now used if not the emptystring forg:zip_shq v14 May 07, 2007 * using b:zipfile instead of w:zipfile to avoid problem when editing alternate file to bring upa zipfile v10 May 02, 2006 * now using "redraw then echo" to show messages, instead of "echo and prompt user" *g:zip_shq provided to allow for quotingcontrol for the command being passed via:r!... commands. v8 Apr 10, 2006 *BramMoolenaar reported that he received an error message due to "Pattern not found: ^.*\%0c"; this was caused by stridx findinga Name...at the beginning of the line; zip.vim tried 4,$s/^.*\%0c//, but that doesn't work. Fixed. v7 Mar 22, 2006 * escaped some characters that can cause filename handling problems. v6 Dec 21, 2005 *writing to files not in directories caused problems- fixed (pointed out by Christian Robinson) v5 Nov 22, 2005 * report option workaround installed v3 Oct 18, 2005 *<amatch> used instead of<afile> in autocmds v2 Sep 16, 2005 * silenced some commands (avoidinghit-enter prompt) * begantesting under Windows; works thus far *filetype detection fixed Nov 03, 2005 * handleswriting zipfiles acrossanetwork using netrw#NetWrite() v1 Sep 15, 2005 * Initial release, had browsing, reading, andwriting==============================================================================vim:tw=78:ts=8:ft=help:noet:norl:fdm=marker