# Vim documentation: pi_tar

main help file

    *pi_tar.txt*	For Vim version 9.2.  Last change: 2026 Feb 14

    		       +====================+
    		       | Tar File Interface |
    		       +====================+

    Original Author:  Charles E. Campbell

    Copyright 2005-2017:					*tar-copyright*
    	The VIM LICENSE (see |copyright|) applies to the files in this
    	package, including tarPlugin.vim, tar.vim, and pi_tar.txt.  Like
    	anything else that's except use "tar.vim" instead of "VIM".  Like
    	anything else that's free, tar.vim and its associated files are
    	provided *as is* and comes with no warranty of any kind, either
    	expressed or implied.  No guarantees of merchantability.  No
    	guarantees of suitability for any purpose.  By using this plugin, you
    	agree that in no event will the copyright holder be liable for any
    	damages resulting from the use of this software. Use at your own risk!

    ==============================================================================

    1. Contents					*tar* *tar-contents*
       1. Contents..................................................|tar-contentsYXXY
       2. Usage.....................................................|tar-usageYXXY
       3. Options...................................................|tar-optionsYXXY
       4. History...................................................|tar-historyYXXY

    ==============================================================================

    2. Usage					*tar-usage* *tar-manual*

       When one edits a *.tar file, this plugin will handle displaying a
       contents page.  Select a 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 make a new file in
       tar archives via the plugin.

    						*:Vimuntar*
       VIMUNTAR

       :Vimuntar [vimhome]

    	This command copies, if necessary, the tarball to the .vim or vimfiles
    	directory using the first writable directory in the 'runtimepath' when
    	no [vimhome] is specified.  Otherwise, the [vimhome] argument allows
    	the user to specify that directory, instead.

    	The copy is done using the command in *g:tar_copycmd* , which is
    		cp   for cygwin, unix, macunix
    		copy for windows (32, 95, 64, 16)
     	The extraction is done with the command specified with

    	*g:tar_extractcmd* , which by default is
    		"tar -xf"

    						*:TarDiff*
       DIFFERENCING SUPPORT

       :TarDiff [filename]

    	This command will attempt to show the differences between the tarball
    	version of a file and the associated file on the system.  In order to
    	find that file on the system, the script uses the path associated with
    	the file mentioned in the tarball.  If the current directory is not
    	correct for that path, :TarDiff will fail to find the associated file.

    	If the [filename] is given, that filename (and path) will be used
    	to specify the associated file.

       PREVENTING LOADING

       If for some reason you do not wish to use vim to examine tar'd files,
       you may put the following two variables into your <.vimrc> to prevent
       the tar plugin from loading:

    	let g:loaded_tarPlugin= 1
    	let g:loaded_tar      = 1

    							*tar-mappings*
       MAPPINGS

       The following (buffer-local) mappings are available in a tar buffer:

    	<CR>		Open selected file for editing, any changes will be
    			written back to the archive.
    	<LeftMouse>	same as <CR>
    	x		Extract selected file.

    ==============================================================================

    3. Options						*tar-options*

       These options are variables that one may change, typically in one's
       <.vimrc> file.
    			 Default
       Variable		  Value   Explanation

       *g:tar_browseoptions*    "Ptf"   used to get a list of contents

       *g:tar_readoptions*	  "OPxf"  used to extract a file from a tarball

       *g:tar_cmd*		  "tar"   the name of the tar program

       *g:tar_nomax*	    0	  if true, file window will not be maximized

       *g:tar_writeoptions*	  "uf"    used to update/replace a file

    ==============================================================================

    4. History						*tar-history*

    	unreleased:
    		Jul 13, 2025	* drop leading /
    		May 19, 2025	* restore working directory after read/write
    		Apr 16, 2025	* decouple from netrw by adding s:WinPath()
    				instead of shelling out to file(1)
    		Mar 02, 2025	* determine the compression using readblob()
    		Mar 02, 2025	* escape the filename before using :read
    		Mar 01, 2025	* fix syntax error in tar#Read()
    		Feb 28, 2025	* add support for bzip3 (#16755)
    		Feb 06, 2025	* add support for lz4 (#16591)
    		Nov 11, 2024	* support permissions (#7379)
    		Feb 19, 2024	* announce adoption
    		Jan 08, 2024	* fix a few problems (#138331, #12637, #8109)
    	v31	Apr 02, 2017	* (klartext) reported that browsing encrypted
    				  files in a zip archive created unencrypted
    				  swap files.  I am applying a similar fix
    				  used on zip.vim to tar.vim: new buffers
    				  are opened with |:noswapfile|.
    		May 16, 2017	* When the mouse option isn't empty, the
    				  leftmouse can be used to select a file
    				  in the tar-file listing.
    	v30	Apr 22, 2014	* .tgz files are ambiguous: they may have been
    				  compressed with either gzip or bzip2.  Tar.vim
    				  disambiguates by using unix's "file" command.
    		Feb 18, 2016	* Changed =~ to =~# where appropriate
    		Feb 18, 2017	* Now also permits xz decompression
    	v28	Jun 23, 2011	* a few more decompression options (tbz tb2 txz)
    	v27	May 31, 2011	* moved cygwin detection before g:tar_copycmd
    				  handling
    				* inserted additional |:keepj| modifiers
    				* changed silent  to  sil!  (|:silent|)
    	v26	Aug 09, 2010	* uses buffer-local instead of window variables
    				  to hold tarfile name
    				* inserted keepj before 0d to protect jump list
    	v25	Jun 19, 2010	* (Jan Steffens) added support for xz
    				  compression
    	v24	Apr 07, 2009	* :Untarvim command implemented
    		Sep 28, 2009	* Added lzma support
    	v22	Aug 08, 2008	* security fixes
    	v16	Jun 06, 2008	* tarfile:: used instead of tarfile: when
    				  editing files inside tarballs.  Fixes a
    				  problem with tarballs called things like
    				  c:\abc.tar. (tnx to Bill McCarthy)
    	v14	May 09, 2008	* arno caught a security bug
    		May 28, 2008	* various security improvements.  Now requires
    				  patch 299 which provides the fnameescape()
    				  function
    		May 30, 2008	* allows one to view *.gz and *.bz2 files that
    				  are in *.tar files.
    	v12	Sep 07, 2007	* &shq now used if not the empty string for
    				  g:tar_shq
    	v10	May 02, 2006	* now using "redraw then echo" to show messages,
    				  instead of "echo and prompt user"
    	v9	May 02, 2006	* improved detection of masquerading as tar file
    	v8	May 02, 2006	* allows editing of files that merely masquerade
    				  as tar files
    	v7	Mar 22, 2006	* work on making tar plugin work across network
    		Mar 27, 2006	* g:tar_cmd now available for users to change
    				  the name of the tar program to be used.  By
    				  default, of course, it's "tar".
    	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	Sep 16, 2005	* handles writing files in an archive back to
    				  the archive
    		Oct 18, 2005	* <amatch> used instead of <afile> in autocmds
    		Oct 18, 2005	* handles writing to compressed archives
    		Nov 03, 2005	* handles writing tarfiles across a network
    				  using netrw#NetWrite()
    	v2			* converted to use Vim7's new autoload feature
    				  by Bram Moolenaar
    	v1	(original)	* Michael Toren
    				  (see michael.toren.net/code/
    				   link seems dead)

    ==============================================================================
    top - main help file