Quick links: help overview · quick reference · user manual toc · reference manual toc · faq
pi_vimball.txt        For Vim version 8.0.  Last change: 2016 Apr 11

                               Vimball Archiver

Author:  Charles E. Campbell  <NdrOchip@ScampbellPfamily.AbizM>
          (remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2015 by Charles E. Campbell         Vimball-copyright
        The VIM LICENSE (see copyright) applies to the files in this
        package, including vimballPlugin.vim, vimball.vim, and pi_vimball.txt.
        except use "vimball" instead of "VIM".  Like anything else that's free,
        vimball.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                             vba vimball vimball-contents

        1. Contents......................................: vimball-contents
        2. Vimball Introduction..........................: vimball-intro
        3. Vimball Manual................................: vimball-manual
           MkVimball.....................................: :MkVimball
           UseVimball....................................: :UseVimball
           RmVimball.....................................: :RmVimball
        4. Vimball History...............................: vimball-history

2. Vimball Introduction                                         vimball-intro

        Vimball is intended to make life simpler for users of plugins.  All
        a user needs to do with a vimball is: 
                vim someplugin.vba
                :so %
       and the plugin and all its components will be installed into their
        appropriate directories.  Note that one doesn't need to be in any
        particular directory when one does this.  Plus, any help for the
        plugin will also be automatically installed.

        If a user has decided to use the AsNeeded plugin, vimball is smart
        enough to put scripts nominally intended for .vim/plugin/ into
        .vim/AsNeeded/ instead.

        Removing a plugin that was installed with vimball is really easy: 
                :RmVimball someplugin
       This operation is not at all easy for zips and tarballs, for example.

        Vimball examines the user's 'runtimepath' to determine where to put
        the scripts.  The first directory mentioned on the runtimepath is
        usually used if possible.  Use 
                :echo &rtp
       to see that directory.

3. Vimball Manual                                       vimball-manual

MAKING A VIMBALL                                                :MkVimball
                :[range]MkVimball[!] filename [path]

        The range is composed of lines holding paths to files to be included
        in your new vimball, omitting the portion of the paths that is
        normally specified by the runtimepath ('rtp').  As an example: 
                :[range]MkVimball filename

        on this range of lines will create a file called "filename.vba" which
        can be used by Vimball.vim to re-create these files.  If the
        "filename.vba" file already exists, then MkVimball will issue a
        warning and not create the file.  Note that these paths are relative
        to your .vim (vimfiles) directory, and the files should be in that
        directory.  The vimball plugin normally uses the first 'runtimepath'
        directory that exists as a prefix; don't use absolute paths, unless
        the user has specified such a path.

        If you use the exclamation point (!), then MkVimball will create the
        "filename.vba" file, overwriting it if it already exists.  This
        behavior resembles that for :w.

        If you wish to force slashes into the filename, that can also be done
        by using the exclamation mark (ie. :MkVimball! path/filename).

        The tip at http://vim.wikia.com/wiki/Using_VimBall_with_%27Make%27
        has a good idea on how to automate the production of vimballs using

MAKING DIRECTORIES VIA VIMBALLS                         g:vimball_mkdir

        First, the mkdir() command is tried (not all systems support it).

        If it doesn't exist, then if g:vimball_mkdir doesn't exist, it is set
        as follows: 
          |g:netrw_localmkdir|, if it exists
          "mkdir"             , if it is executable
          "makedir"           , if it is executable
          Otherwise           , it is undefined.
       One may explicitly specify the directory making command using
        g:vimball_mkdir.  This command is used to make directories that
        are needed as indicated by the vimball.


        You may override the use of the 'runtimepath' by specifying a
        variable, g:vimball_home.

                vim filename.vba

        Simply editing a Vimball will cause Vimball.vim to tell the user to
        source the file to extract its contents.

        Extraction will only proceed if the first line of a putative vimball
        file holds the "Vimball Archiver by Charles E. Campbell" line.

LISTING FILES IN A VIMBALL                                      :VimballList


        This command will tell Vimball to list the files in the archive, along
        with their lengths in lines.

MANUALLY INVOKING VIMBALL EXTRACTION                            :UseVimball

                :UseVimball [path]

        This command is contained within the vimball itself; it invokes the
        vimball#Vimball() routine which is responsible for unpacking the
        vimball.  One may choose to execute it by hand instead of sourcing
        the vimball; one may also choose to specify a path for the
        installation, thereby overriding the automatic choice of the first
        existing directory on the 'runtimepath'.

REMOVING A VIMBALL                                              :RmVimball

                :RmVimball vimballfile [path]

        This command removes all files generated by the specified vimball
        (but not any directories it may have made).  One may choose a path
        for de-installation, too (see 'runtimepath'); otherwise, the
        default is the first existing directory on the 'runtimepath'.
        To implement this, a file (.VimballRecord) is made in that directory
        containing a record of what files need to be removed for all vimballs
        used thus far.


        If for some reason you don't want to be able to extract plugins
        using vimballs: you may prevent the loading of vimball.vim by
        putting the following two variables in your <.vimrc>: 

                let g:loaded_vimballPlugin= 1
                let g:loaded_vimball      = 1

WINDOWS                                                 vimball-windows

        Many vimball files are compressed with gzip.  Windows, unfortunately,
        does not come provided with a tool to decompress gzip'ped files.
        Fortunately, there are a number of tools available for Windows users
        to un-gzip files:

            Item     Tool/Suite   Free   Website
            ----     ----------   ----   -------
            7zip        tool       y     http://www.7-zip.org/
            Winzip      tool       n     http://www.winzip.com/downwz.htm
            unxutils    suite      y     http://unxutils.sourceforge.net/
            cygwin      suite      y     http://www.cygwin.com/
            GnuWin32    suite      y     http://gnuwin32.sourceforge.net/
            MinGW       suite      y     http://www.mingw.org/

4. Vimball History                                      vimball-history {{{1

        37 : Jul 18, 2014 * (by request of T. Miedema) added augroup around
                            the autocmds in vimballPlugin.vim
             Jul 06, 2015 * there are two uses of tabc; changed to tabc!
        34 : Sep 22, 2011 * "UseVimball path" now supports a non-full path by
                            prepending the current directory to it.
        33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba
                          * Changed silent! to sil! (shorter)
                          * Safed 'swf' setting (during vimball extraction,
                            its now turned off)
        32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and
                            :so someplugin.vba.gz (and the other supported
                            compression types) now works
                          * (Jan Steffens) added support for xz compression
                          * fenc extraction was erroneously picking up the
                            end of the line number when no file encoding
                            was present.  Fixed.
                          * By request, beginning the switchover from the vba
                            extension to vmb.  Currently both are supported;
                            MkVimball, however, now will create *.vmb files.
             Feb 11, 2011 * motoyakurotsu reported an error with vimball's
                            handling of zero-length files
             Feb 18, 2016 * Changed =~ to =~# where appropriate
        30 : Dec 08, 2008 * fnameescape() inserted to protect error
                            messaging using corrupted filenames from
                            causing problems
                          * RmVimball supports filenames that would
                            otherwise be considered to have "magic"
                            characters (ie. Abc[1].vba)
             Feb 18, 2009 * s:Escape(), g:vimball_shq, and g:netrw_shq
                            removed (shellescape() used directly)
             Oct 05, 2009 * (Nikolai Weibull) suggested that MkVimball
                            be allowed to use slashes in the filename.
        26 : May 27, 2008 * g:vimball_mkdir usage installed.  Makes the
                            $HOME/.vim (or $HOME\vimfiles) directory if
             May 30, 2008 * (tnx to Bill McCarthy) found and fixed a bug:
                            vimball wasn't updating plugins to AsNeeded/
                            when it should
        25 : Mar 24, 2008 * changed vimball#Vimball() to recognize doc/*.??x
                            files as help files, too.
             Apr 18, 2008 * RmVimball command is now protected by saving and
                            restoring settings -- in particular, acd was
                            causing problems as reported by Zhang Shuhan
        24 : Nov 15, 2007 * g:vimball_path_escape used by s:Path() to
                            prevent certain characters from causing trouble
                            (defunct: fnameescape() and shellescape()
                            now used instead)
        22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter
        21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header
                            handling problem and it now changes \s to /s
        20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag
        18 : Aug 01, 2006 * vimballs now use folding to easily display their
                          * if a user has AsNeeded/somefile, then vimball
                            will extract plugin/somefile to the AsNeeded/
        17 : Jun 28, 2006 * changes all \s to /s internally for Windows
        16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify
                            installation root paths implemented for
                            UseVimball, MkVimball, and RmVimball.
                          * RmVimball implemented
        15 : Jun 13, 2006 * bugfix
        14 : May 26, 2006 * bugfixes
        13 : May 01, 2006 * exists("&acd") used to determine if the acd
                            option exists
        12 : May 01, 2006 * bugfix - the 'acd' option is not always defined
        11 : Apr 27, 2006 * VimballList would create missing subdirectories that
                            the vimball specified were needed.  Fixed.
        10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of
                            functions.  Included some more settings in them
                            which frequently cause trouble.
        9  : Apr 26, 2006 * various changes to support Windows' predilection
                            for backslashes and spaces in file and directory
        7  : Apr 25, 2006 * bypasses foldenable
                          * uses more exe and less norm! (:yank :put etc)
                          * does better at insuring a "Press ENTER" prompt
                            appears to keep its messages visible
        4  : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter
                            only fires once, so the "Source this file..."
                            message is now issued only once.
        3  : Mar 20, 2006 * removed query, now requires sourcing to be
                            extracted (:so %).  Message to that effect
                          * :VimballList  now shows files that would be
        2  : Mar 20, 2006 * query, :UseVimball included
        1  : Mar 20, 2006 * initial release


Quick links: help overview · quick reference · user manual toc · reference manual toc · faq