Replace text with the contents of a register.
Vim script
Latest commit 832efc2 Oct 29, 2014 Ingo Karkat committed with Version 1.42
- BUG: Previous version 1.41 broke replacement of single character with gr{motion}.
Permalink
Failed to load latest commit information.
autoload Version 1.42 Oct 31, 2014
doc Version 1.42 Oct 31, 2014
plugin Version 1.40 Nov 29, 2013
README Version 1.42 Oct 31, 2014

README

This is a mirror of http://www.vim.org/scripts/script.php?script_id=2703

DESCRIPTION
Replacing an existing text with the contents of a register is a very common
task during editing. One typically first deletes the existing text via the
d, D or dd commands, then pastes the register with p or P. Most of
the time, the unnamed register is involved, with the following pitfall: If you
forget to delete into the black-hole register ("_), the replacement text is
overwritten!

This plugin offers a two-in-one command that replaces text covered by a
{motion}, entire line(s) or the current selection with the contents of a
register; the old text is deleted into the black-hole register, i.e. it's
gone. (But of course, the command can be easily undone.)

The replacement mode (characters or entire lines) is determined by the
replacement command / selection, not by the register contents. This avoids
surprises like when the replacement text was a linewise yank, but the
replacement is characterwise: In this case, no additional newline is inserted.

SEE ALSO
- ReplaceWithSameIndentRegister.vim (vimscript #5046) is a companion plugin
  for the special (but frequent) case of replacing lines while keeping the
  original indent.
- LineJugglerCommands.vim (vimscript #4465) provides a similar :Replace [["]x]
  Ex command.

RELATED WORKS
- regreplop.vim (vimscript #2702) provides an alternative implementation of
  the same idea.
- operator-replace (vimscript #2782) provides replacement of {motion} only,
  depends on another library of the author, and does not have a default
  mapping.
- Luc Hermitte has an elegant minimalistic visual-mode mapping in
  http://code.google.com/p/lh-vim/source/browse/misc/trunk/macros/repl-visual-no-reg-overwrite.vim
- EasyClip (https://github.com/svermeulen/vim-easyclip) changes the delete
  commands to stop yanking, introduces a new "m" command for cutting, and also
  provides an "s" substitution operator that pastes register contents over the
  moved-over text.

USAGE
[count]["x]gr{motion}   Replace {motion} text with the contents of register x.
                        Especially when using the unnamed register, this is
                        quicker than "_d{motion}P or "_c{motion}<C-R>"
[count]["x]grr          Replace [count] lines with the contents of register x.
                        To replace from the cursor position to the end of the
                        line use ["x]gr$
{Visual}["x]gr          Replace the selection with the contents of register x.