| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- This is a mirror of http://www.vim.org/scripts/script.php?script_id=3848
- DESCRIPTION
- This plugin defines repetition of Vim built-in normal mode commands via .
- for visual mode. Additionally, it offers functions like the popular repeat.vim
- plugin that allow mappings to be repeated in visual mode, too.
- VISUAL MODE REPETITION
- This extends the built-in normal mode repeat . to visual mode.
- VISUAL MODE MAPPING REPETITION
- Like with repeat.vim for normal mode, visual mode mappings can register a
- <Plug> mapping to be used for visual mode repetition.
- Likewise, normal mode mappings can (in addition to the repeat.vim registration
- of a normal mode mapping) register a visual mode mapping with visualrepeat.vim
- that will be repeated in visual mode.
- Operator-pending mappings end with g@ and repeat naturally; i.e. Vim
- re-applies the 'opfunc' on the equivalent text (but at the current cursor
- position). But without a call to repeat#set(), it is impossible to repeat this
- operator-pending mapping to the current visual selection. Plugins cannot call
- repeat#set() in their operator-pending mapping, because then Vim's built-in
- repeat would be circumvented, the full mapping ending with g@ would be
- re-executed, and the repetition would then wait for the {motion}, what is not
- wanted.
- Therefore, this plugin offers a separate visualrepeat#set() function that can
- be invoked for operator-pending mappings. It can also be invoked for
- normal-mode mappings that have already called repeat#set(), and may override
- that mapping with a special repeat mapping for visual mode repeats. Together
- with the remapped {Visual}. command, this allows repetition - similar to what
- the built-in Vim commands do - across normal, operator-pending and visual
- mode.
- SOURCE
- - Based on vimtip #1142, Repeat last command and put cursor at start of change
- http://vim.wikia.com/wiki/Repeat_last_command_and_put_cursor_at_start_of_change
- - The client interface and implementation has been based on repeat.vim
- (vimscript #2136) by Tim Pope.
- RELATED WORKS
- - repeat.vim (vimscript #2136) has been the basis for this plugin and should
- be used in conjunction with visualrepeat.vim. (Otherwise, you'd have visual
- mode repeat, but no repeat in normal mode.)
- USAGE
- {Visual}. Repeat last change in all visually selected lines.
- - characterwise: Start from cursor position.
- - linewise: Each line separately, starting from the
- current column (usually the first in this mode).
- - blockwise: Only the selected text. This is
- implemented by temporarily duplicating the selection
- to separate lines and repeating over those, starting
- from the first column.
- Note: If the last normal mode command included a
- {motion} (e.g. g~e), the repetition will also move
- exactly over this {motion}, NOT the visual selection!
- It is thus best to repeat commands that work on the
- entire line (e.g. g~$).
|