Vim备忘录:搜索和替换

vim提供了命令:s(是单词替换substitue的简写)来进行文本搜索以及替换,下面列举了一些例子如何使用vim中的搜索和替换模块。

:s命令搜索一个文本正则,并使用一个文本替换它。命令中有许多选项可以选择,这里介绍几个常用的组合。

:%s/foo/bar/g

找到当前文档所有出现的foo,并将其替换成为bar

:s/foo/bar/g

找到当前行中出现的所有foo,并替换为bar

:%s/foo/bar/gc

将所有foo替换为bar,但是需要用户确认。

:%s/\<foo\>/bar/gc

将所有单个为foo的单词替换为bar,并且需要用户确认。

:%s/foo/bar/gci

讲所有的foo替换为bar,但是正则式中可以有满足i标志的不敏感项(insensitive)

总体而言,g标志表示全局,即对所有出现的情况都做处理。c标志需要用户去确认是否替换,vim中的输出类似于:

replace with foobar (y/n/a/q/l/^E/^Y)?

更多情况

选定替换区域

:5,12s/foo/bar/g 将5到11行的foo替换为bar

:'a,'bs/foo/bar/g 把vim中标记为ab之间的foo替换为bar

:'<,'>s/foo/bar/g 如果vim中有visual工作(v键可以工作),将选定区域内的foo替换为bar

:,$s/foo/bar/g 将当前行到最后行之间的foo替换为bar

:,+2s/foo/bar/g将当前行和随后两行中的foo替换为bar

:g/^baz/s/foo/bar/g 将以baz为行首的foo替换为bar

匹配的时候

.,*,\,[,^$是元字符,需要通过反斜杠转义

+,?,|,&,{,(,)也需要注意避免

\t是制表符,\s是空白符
\n是换行,\r是CR(carriage return=Ctrl-M=^M)

替换的时候

\r是换行,\n是空字符

\&是字符&,而&是满足搜索模式的文本

\O将插入匹配所有模式的文本

\1插入第一个回溯引用,并以此类推

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • sed与awk实例 文本间隔 在每一行后面增加一空行 将原来的所有空行删除并在每一行后面增加一空行。这样在输出的文...
    stuha阅读 1,912评论 0 21
  • 这篇文章是手册的中文译版整理而来(英文看着太慢了,感谢前人铺路Orz...),vim的markdown插件和实时预...
    Himryang阅读 7,118评论 0 20
  • 曾经的回忆盘旋在墓地上空, 犹豫着要不要向海平面去冲。 我挥一挥手,你们从来都没有来过,何谈离开。 汤姆从小就是个...
    一只比亚阅读 198评论 0 0
  • 残月高挂 悲意渐浓 是谁凉了谁的思念 是谁伤了谁的期盼 院落一瓣桂花 千丘阻断思家 庭散一地桂香 闺中娇娃念郎 漫...
    伊沫儿阅读 402评论 0 2