在`vi`中的选择中查找和替换

Agn*_*ian 64 vi vim replace editor

如何在选择中进行查找和替换vi

Bra*_*rks 86

这里建议的大多数其他解决方案都适用于选择发生的整个行,这可能不是您想要的.

要仅在选择中搜索和替换,首先在视觉上选择文本,然后使用如下命令:

:%s/\%VSEARCH/REPLACE/g
Run Code Online (Sandbox Code Playgroud)

这将仅在视觉选择的部分中进行搜索和替换,将SEARCH替换为REPLACE.如果您选择了多行,则这也适用于多行.

  • 在视觉上选择一条线的一部分时,这是否适用于替换?我不能让它用回车代替空格。我正在选择该行的一部分,他们使用 `:%s/\%V /\r/g` 没有任何乐趣。第一个空格被替换,但后面的 4 个空格保持不变。 (2认同)
  • 有关更多信息,请参阅 https://vim.fandom.com/wiki/Search_and_replace_in_a_visual_selection (2认同)

Cha*_*rch 72

在可视模式下选择文本(我假设你正在做的是什么),然后按:开始键入命令,你会在命令行中看到这样的内容:

:'<,'>
Run Code Online (Sandbox Code Playgroud)

这意味着该命令将应用于选择.然后输入s/search/replace/并按Enter键.(g如果要替换所有匹配项,请在第三个斜杠后添加; c如果要为每个替换项添加确认,则添加a )

  • 警告:该范围仅适用于行!如果您的选择仅包含部分行,则搜索和替换将在整行上有效.获取部分行查找和替换需要脚本编写. (41认同)
  • 我建议暂时将它移动到另一条线,进行替换,并将其移回. (2认同)

Tom*_*lak 18

如果您使用可视模式进行选择,则:

:'<,'>s/regex/replacement/options
Run Code Online (Sandbox Code Playgroud)

'<,'>如果':'从可视模式进入命令行模式(通过按下),VIM将自动放置范围().

  • 理论上这应该按预期工作,但正如其他人指出的那样,实际上会替换标记“&lt;”开始和“&gt;”结束的行中的任何位置。也许可以让它与 '\%'&gt;` 原子一起工作..但我最初的实验失败了。 (2认同)