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

Sot*_*her 9 vi vim

经常在我进行查找和替换时,vi我将这样做:

:%s/find/replace/gc
Run Code Online (Sandbox Code Playgroud)

这使您可以选择通过按下跳过n,或按下更换y.但是,有时候n当我打算按下时,我会不小心跳过大文件中的一个y.

我如何回到前一个并给我第二个改变?

从本质上讲,如何I find(search)临时的另一个方向?谢谢.

Pra*_*nna 5

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

  1. 以您提到的方式开始查找替换: :%s/find/replace/gc
  2. 按意外跳过替换后,按n中断搜索<ctrl-C>
  3. 按下<shift-N>可返回到上一次出现的find学期
  4. 遇到这个单词时,请以不同的方式运行find-replace: :.,$s/find/replace/gc
  5. 继续操作

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

注意:.,$范围说明符指示要在从当前行(由表示)到最后一行(由表示)开始的行范围内执行:ssubstitute)操作。.$

注意2:您可能已经知道了,但对于偶然发现此帖子以寻找类似内容的其他人,请重申- %范围说明符指示对当前活动缓冲区的所有行执行:ssubstitute)操作。


Bor*_*rov 2

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

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

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

如果您错过了某个目标,您只需点击N即可返回到之前的结果并替换它。