在vi中查找替换确认时如何返回上一个?



当我在vi中查找和替换时,我经常会这样做:

:%s/find/replace/gc

这为您提供了按n跳过或按y替换的选项。 但是,有时当我打算按y时,我会通过按n来意外跳过大文件中的一个。

如何倒退到上一个并给我第二次更改?

从本质上讲,我如何暂时find(search)另一个方向?谢谢。

我不确定您是否要中断当前的查找-替换操作并再次恢复它。但如果这是可以接受的,这是我的建议:

  1. 按照您提到的方式开始查找-替换::%s/find/replace/gc
  2. 通过按n意外跳过替换后,按<ctrl-C>中断搜索
  3. <shift-N>返回到上一个出现的find术语
  4. 当你在这个词时,运行查找-替换有点不同::.,$s/find/replace/gc
  5. 继续操作

所有这些功能都可以与 vim 本机功能配合使用,而无需安装任何插件。

注意:.,$范围说明符指示对从当前行(.表示)到最后一行($表示)的一系列行执行:s(substitute)操作。

注意2:您可能知道,但重申其他偶然发现这篇文章的人搜索类似的东西 -%范围说明符表示对当前活动缓冲区的所有行执行:s(substitute)操作。

这不是问题的答案,而是一个很好的选择。我最近发现了 CtrlSF 插件,它极大地改进了搜索/替换过程。

基本上,您将搜索结果放在缓冲区中,并且可以在此单个缓冲区中进行所有替换。

在您的方案中,您首先执行:CtrlSF find,获取包含所有文件中所有匹配项的缓冲区,然后执行/find并随n移动到目标上并更改它们(当然,您实际上可以只更改第一个,然后用.重复替换)。

如果您错过了某个目标,只需按N即可返回到上一个结果并替换它。

似乎您无法使用此模式返回到之前的比赛。出现的栏建议以下命令y/n/a/q/l/^E/^Y但没有人会向后返回到上一个匹配。

但是您可以使用下面描述的略有不同的模式

  • 键入此/pattern模式替换为感兴趣的单词;
  • 您的光标被导航到第一个出现,如果您不需要更改它,请按n它将导航到下一个匹配项;
  • 由于您了解需要替换单词,因此请键入cw,此命令将剪切向前单词并转到插入模式;
  • 在释放的位置输入所需的文本,然后按ESC切换回命令模式;
  • 现在再次按n直到所需的发生;
  • 由于您意识到需要更改事件,只需按.它将重复前面提到的操作;
  • 如果你想回去,只需使用N

最新更新