sponsor Vim development Vim logo Vim Book Ad

redocommand : Execute commands from the command history.

 script karma  Rating 16/8, Downloaded by 3957  Comments, bugs, improvements  Vim wiki

created by
Ingo Karkat
 
script type
utility
 
description
DESCRIPTION
Re-executes the last / Nth ex command previously entered in command mode. An
optional pattern is used to locate the most recent matching command. This is
similar to the command-line window (q:), or navigating the command history via
<Up> and <Down>, but provides an even faster way to re-execute a command if
you remember some characters or a pattern that identifies the command line.
The redocommand itself will not be included in the command history. Global
literal replacement can be done via 'old=new' arguments.

This is modeled after the 'fc -s' command from the Posix shell (which is often
aliased to 'r').

USAGE
:[N]Redocommand (or abbreviated :R)
                        Execute the last / Nth ex command.

:[N]Redocommand {pattern}
                        Execute the last / Nth ex command that matches
                        {pattern}.
                        Settings such as 'magic' and 'ignorecase' apply.

                        With N=0, only the very last command from the history
                        is executed if it matches {pattern}; the entire
                        history isn't searched.

                        Note: If the {pattern} starts with : (and there is no
                        history command matching the literal ":cmd"), the
                        history is searched for "cmd", anchored at the
                        beginning. This is convenient because ":R :echo" is
                        more intuitive to type than ":R ^echo".

:[N]Redocommand {old}={new} [{old2}={new2} ...] [{pattern}]
                        Execute the last / Nth ex command (that matches
                        {pattern}), replacing all literal occurrences of {old}
                        with {new}.

:[N]RedoRepeat [{old}={new} ...] (or abbreviated :RR)
                        Execute the last / Nth ex command that was repeated
                        via :Redocommand. Any replacements done the last time
                        are still in effect; new replacements of {old} to
                        {new} can be added.

The following variants are useful when you repeatedly use command A in one
buffer and command B in another. Instead of passing different [N] values to
:RedoRepeat, just recall from the local redo history.

:[N]RedoBufferRepeat [{old}={new} ...] (or abbreviated :RB)
                        Like :RedoRepeat, but repeat the last / Nth ex
                        command repeated in the current buffer.

:[N]RedoWindowRepeat [{old}={new} ...] (or abbreviated :RW)
                        Like :RedoRepeat, but repeat the last / Nth ex
                        command repeated in the current window.

EXAMPLE
Given the following history:
    :history
    1 e foo.txt
    2 %s/foo/\0bar/g
    3 w bar.txt
:Redocommand            will execute :w bar.txt
:Redocommand %          will execute :%s/foo\0/bar/g
:Redocommand foo        will execute :%s/foo\0/bar/g
:2Redocommand foo       will execute :e foo.txt
:Redocommand b=B .txt=  will execute ':w bar.txt' as :w Bar

:echo "another command"
:RedoRepeat             will again execute :w Bar
:2RedoRepeat            will execute :%s/foo\0/bar/g
:RedoRepeat B=F         will execute :w Far
:Redocommand            will execute :echo "another command"
:RedoRepeat             will execute :w Far
 
install details
INSTALLATION
This script is packaged as a vimball. If you have the "gunzip" decompressor
in your PATH, simply edit the *.vba.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 redocommand.vba.gz
    :so %
To uninstall, use the :RmVimball command.

DEPENDENCIES
- Requires Vim 7.0 or higher.

CONFIGURATION
If you do not want the shorthand :R, :RR, :R... commands, define (e.g. in your
vimrc):
    let g:redocommand_no_short_command = 1
 

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
redocommand.vba.gz 1.40 2012-07-20 7.0 Ingo Karkat ENH: Add :RedoBufferRepeat / :RB and :RedoWindowRepeat / :RW commands. These are useful when you repeatedly use command A in one buffer and command B in another. Instead of passing different [N] values to :RedoRepeat, just recall from the local redo history.
redocommand.vba.gz 1.30 2011-11-23 7.0 Ingo Karkat - ENH: Add :RedoRepeat command to repeat the last / Nth :Redocommand when other Ex commands (e.g. :wnext) were issued in between.
- ENH: If the {pattern} starts with : (and there is no history command matching the literal ":cmd"), the history is searched for "cmd", anchored at the beginning. This is convenient because ":R :echo" is more intuitive to type than ":R ^echo".
redocommand.vba.gz 1.20 2009-04-03 7.0 Ingo Karkat - Added optional [count] to repeat the Nth, not the last found match.
- Split off documentation into separate help file. Now packaging as VimBall.
- Using separate autoload script to help speed up VIM startup.
redocommand.vim 1.10.005 2009-02-11 7.0 Ingo Karkat Implemented ':Redocommand old=new <pattern>'. Now requiring VIM 7.
redocommand.vim 1.00.003 2008-08-04 6.0 Ingo Karkat Better handling of errors during execution of the command.
The redone command is added to the history.  
Last version with support for VIM 6.2 - 6.4; dropped support for VIM 6.0 and 6.1.
redocommand.vim 0.02 2006-09-18 6.0 Ingo Karkat Initial upload
ip used for rating: 142.132.191.50

Questions about Vim should go to the maillist. Help Uganda.     Vim at Github