Vim中的查找替换


前两天同事在群里发了个通知,大致意思是大家做文案时不要用“最”,否则会违反广告法带来罚单。

我皮了一下,回了个“%s/最/第二/g”。
微信截图

用vim的人都知道,这是把所有“最”替换成“第二”的意思。其实vim的查找替换功能非常强大,用的好可以极大提升效率。


vim的查找替换命令如下所示:

:{作用范围}s/{目标}/{替换}/{替换标志}


  • 作用范围:
    • 当前行 s
      :s/最/第二/g 把当前行的所有“最”替换成“第二”
    • 全文 %s
      :%s/最/第二/g 把全文的所有“最”替换成“第二”
    • 8-15行 8,15s
      :8,15s/最/第二/g 把8-15行的所有“最”替换成“第二”
    • 当前行与接下来的5行 .,+5s
      :.,+5s/最/第二/g 把当前行与接下来的5行的所有“最”替换成“第二”

  • 目标:支持正则表达式

  • 替换标志:
    • 全局所有目标 g
      例子如上面所示
    • 大小写不敏感 i ,大小写敏感I
      :%s/foo/bar/ig 把全文的所有“foo”替换为“bar”,忽略大小写
    • 需要确认 c
      :%s/最/第二/gc 把全文的所有“最”替换为“第二”,但是每一个都需要确认
      • 这时每次替换都会提示: replace with 第二 (y/n/a/q/l/^E/^Y)?
      • y 确认替换当前的“最”
      • n 不替换当前的“最”
      • a 替换所有
      • q 退出查找模式
      • l 替换当前位置并退出
      • ^E 窗口向下移动一行
      • ^Y 窗口向上移动一行



推荐阅读:
使用双buffer无锁化
不要拷贝
Spark“并行”写

转载请注明出处: http://blog.guoyb.com/2018/06/09/vim-replace/

欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考:
后端技术小黑屋

Comments