sponsor Vim development Vim logo Vim Book Ad

ArgsAndMore : Apply commands to multiple buffers and manage the argument list.

 script karma  Rating 1/1, Downloaded by 110    Comments, bugs, improvements  Vim wiki

created by
Ingo Karkat
 
script type
utility
 
description
DESCRIPTION
This plugin supports you with batch processing many files by extending the
built-in :windo, :argdo, etc. commands. You can filter the argument list,
add files _not_ matching a pattern, convert between arguments and quickfix
list, and apply arbitrary Ex commands (also partially) via :Argdo, then
analyze any errors and retry on an argument list where the successfully
processed arguments have been removed.

RELATED WORKS
- The :ArgsNegated command was inspired by the following Stack Overflow
  question:
    http://stackoverflow.com/questions/11547662/how-can-i-negate-a-glob-in-vim

USAGE
:Bufdo {cmd} Execute {cmd} in each buffer in the buffer list, then
return back to the original one.

:Windo {cmd}            Execute {cmd} in each window, then return back to the
                        original one.

:Winbufdo {cmd}         Execute {cmd} in each different buffer shown in one of
                        the windows in the current tab page (once per buffer),
                        then return back to the original one.

:Tabdo {cmd}            Execute {cmd} once in each tab page, then return back
                        to the original one.

:Tabwindo {cmd}         Execute {cmd} in each open window on each tab page,
                        then return back to the original one.

:Argdo {cmd}            Execute {cmd} for each file in the argument list, then
                        return back to the original file and argument.
:[range]Argdo {cmd}     Execute {cmd} for the [range] of indices from the
                        argument list, then return back to the original file
                        and argument.
                        For example, to execute {cmd} on the remaining
                        arguments, use :.,$Argdo {cmd}

                        In contrast to :argdo, this also avoids the
                        hit-enter prompt (all files will be processed
                        without further interaction from you), and an error
                        summary will be printed.
                        To work on the errors / arguments with errors, you can
                        use :ArgdoErrors and :ArgdoDeleteSuccessful.

:ArgdoErrors            List all error messages that occurred during the last
                        :Argdo command, and for each unique error, print the
                        argument number and filespec.

:ArgdoDeleteSuccessful  Delete those arguments from the argument list that
                        didn't cause any error messages during the last
                        :Argdo command.


:ArgsFilter {expr}      Apply the filter() of {expr} to the argument list,
                        and keep only those where {expr} yields true. This
                        allows you to :argdelete multiple arguments at once
                        and to delete without specifying the full filename.

:ArgsNegated[!] {arglist}
                        Define all files except {arglist} as the new argument
                        list and edit the first one.


:ArgsList[!]            List each argument number and filespec in a neat list
                        (not just one after the other as :args). With [!],
                        expand all arguments to absolute filespecs.
:ArgsList[!] {glob}     List each argument number and filespec that matches
                        (with [!]: does not match) {glob} in a neat list.
                        Matching and printing is done to the full filespec.


:ArgsToQuickfix         Show all arguments as a quickfix list.


:CListToArgs            Convert the files in the quickfix list to arguments.
:[count]CListToArgsAdd

:LListToArgs            Convert the files in the window's location list to
:[count]LListToArgsAdd  arguments.
 
install details
INSTALLATION
This script is packaged as a vimball. If you have the "gunzip" decompressor
in your PATH, simply edit the *.vmb.gz package in Vim; otherwise, decompress
the archive first, e.g. using WinZip. Inside Vim, install by sourcing the
vimball or via the :UseVimball command.
    vim ArgsAndMore*.vmb.gz
    :so %
To uninstall, use the :RmVimball command.

DEPENDENCIES
- Requires Vim 7.0 or higher.

CONFIGURATION
After each {cmd}, an extra Ex command (sequence) can be executed. By default,
a delay of 100 ms is introduced here. This allows you to abort an interactive
:s///c substitution by pressing CTRL-C twice within the delay. (Without the
delay, it may or may not abort.) To also persist any changes to the buffer,
you could use:
    let g:ArgsAndMore_AfterCommand = 'update | sleep 100ms'
 

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
ArgsAndMore-1.11.vmb.gz 1.11 2013-01-21 7.0 Ingo Karkat FIX: Factor out s:sort() and also use numerical sort in the one missed case.
ArgsAndMore-1.10.vmb.gz 1.10 2012-09-10 7.0 Ingo Karkat - Add g:ArgsAndMore_AfterCommand hook before buffer switching and use this by default to add a small delay, which allows for aborting an interactive s///c substitution by pressing CTRL-C twice within the delay.
- Add :Bufdo command for completeness, to get the new hook, and the enhanced error reporting of :Argdo.
ArgsAndMore-1.01.vmb.gz 1.01 2012-08-28 7.0 Ingo Karkat - Do not use <f-args> because of its unescaping behavior.
- FIX: "E480: No match" on :ArgsNegated with ../other/path relative argument; need to issue a dummy :chdir to convert relative args before doing the :argdelete.
ArgsAndMore.vba.gz 1.00 2012-07-30 7.0 Ingo Karkat Initial upload
ip used for rating: 54.235.20.17

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.
   
SourceForge.net Logo