vim:如何将光标下的字符替换为以前被删除的文本(不止一次)?

Kos*_*tos 26 vim replace

假设我通过使用视觉选择+猛拉将3个字符"foo"拉入我的剪贴板,即:'vllly'

然后我将光标移动到第5行的另一个角色(让我们称之为这个角色x),我想用之前的东西替换,即foo.

我可以使用'p'在x之后粘贴foo,或者'P'在x之前粘贴foo,但我想用foo 替换 x.

我可以使用'vp'用foo替换x,但这只能工作一次,因为它在我的剪贴板中留下了x.换句话说,如果我移动到下一次出现的x并再次点击vp,它就不会用foo替换它.

当然,我可以通过使用:s/x/foo/gc进行搜索/替换,然后忽略我不想替换的所有x的出现,但这有点单调乏味,特别是当我需要的时候do是替换2或3次出现的x非常接近我的光标但不在同一行上(即:第2,3和7行).

所以目前我正在使用:2,7s/x/foo/gc但是我想知道是否有办法将光标移动到x并点击[在这里插入魔术按钮]以用foo替换它.然后我可以移动到我的下一次出现的x并再次点击[魔术按钮]并且繁荣,它再次用foo替换x.

尽管我很难用这个比喻,想象你输入的是记事本,然后选择3个字符,按Ctrl + c将它们复制到剪贴板中,然后高亮显示x,然后按Ctrl + v将其替换为FOO.然后突出显示另一个x,然后再次按Ctrl + v,依此类推.

我怎么在vim中这样做?

Ste*_*fan 44

怎么样s<C-r>0,这可以重复.

  • s 删除光标下的字符并进入插入模式.
  • <C-r>0 insert寄存器0,用于保存被拉动的文本.

您也可以手动使用s和键入foo,也可以重复使用.

  • 真好.1.我总是使用`cl`(没有意识到's`那样做),2.我习惯性地使用`"0"而且我从未想过我可以推迟插入模式.我用户i_CTRL-R on已经每天一次 (3认同)

Rai*_*ndi 7

从0寄存器粘贴v"0p.