如何用以前选中的文本替换()中的文本?


9

假设我之前拉过文本Fnord,并且我的光标位于B该行的上:

M:mock(Baz)

如何用先前选中的文本更改()中的文本?

目前,我经常通过以下操作来犯错:

  • di( 又名“删除()内”
  • SHIFT + P

但是,这又给我留下了确切的文字,因为删除的文字将被移到寄存器中。

我希望有:

M:mock(Fnord)


1
@Rich提供的问题涵盖了替换被选中单词的更一般的情况。我认为这个问题较为具体,没有得到相同的答案。
k0pernikus

提示:0寄存器将包含最后被选中的文本。:h quote0
彼得·林克

1
可以将提到的问题的接受答案中的相同想法应用于此处。将光标放在括号内,只需按vi)p。它与该答案相同,只是使用i)文本对象而不是w文本对象,
EvergreenTree

1
@ k0pernikus恐怕我们必须同意不同意这一点。对我来说,这两个问题的重要部分是替换,而不是用于应用替换的文本对象。
Rich

Answers:


13

您可以使用视觉选择来选择要替换的文本,然后将其粘贴如下:

vi(p

vi(选择Baz(因为它括在括号中),将pFnord粘贴在其上。

但是,这将在粘贴后将Baz拉到寄存器中,这可能不是您想要的。


10

除非您指定一个寄存器,否则p(或P)将使用最后填充的寄存器。未命名的寄存器""包含最近被撤销或删除的文本(除非指定了另一个寄存器,例如使用"ay),但是这些也将"0用于撤销或"1删除/更改。参见寄存器

如果最后一个文本被选中,则y可以使用将该文本从0寄存器中粘贴"0P。如果已删除,则可以2使用"2P"1现在是Baz)注册进行访问。

或者,您可以避免弄乱您的寄存器并删除到黑洞寄存器"_

"_di(P

3

如果可以选择安装插件,则可以使用yankstack.vim。然后,您可以保留当前的工作流程:

目前,我经常通过以下操作来犯错:

  • di(aka“在内部删除()”
  • SHIFT + P
  • Alt + p-循环到上一个拉环

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.