替换字符串而不改变大小写?


18

由于我一起工作的领域特定语言的一个怪癖,我经常面临的(选择性,而不是全局)的任务更换termTERMwordWORD分别。

这意味着,我不区分大小写地搜索term,并希望将其替换为,word 同时保持原始大小写term不变

由于检查全部的term一致的大写/小写将是困难的,是不是真的有必要,我会满足于大/小写word/ WORD被决定的第一个字母term

我怎样才能做到这一点?


2
对于那些不知道的人,请注意“选择性地”:只要在c下面的替换语句的末尾添加,Vim就会询问您每一个匹配项。
DevSolar 2015年

Answers:


16

Michaels Geddes的插件keepcase提供了您所需的一切:

:%SubstituteCase/\cterm/word/g

:substitute还支持来自的其他语法元素。


5
很棒...这将大大加快我的速度。我还注意到,我不再问“ 可以做到这一点”,而只是问“ 如何做到这一点”。看来我终于“到达”了Vim。:-D
DevSolar,2015年

16

这可以通过处理:Subvert取消插件

有一次,我有一个带有域模型“ facility”的应用程序,需要将其重命名为“ building”。因此,简单的搜索和替换对吧?

:%s/facility/building/g

哦,但是大小写不同!

:%s/Facility/Building/g
:%s/FACILITY/BUILDING/g

等一下,复数比“ s”还多,所以我们也需要得到它!

:%s/facilities/buildings/g
:%s/Facilities/Buildings/g
:%s/FACILITIES/BUILDINGS/g

Abolish.vim支持您。一个命令可以完成全部六个操作,您也可以使用&重复执行!

:%Subvert/facilit{y,ies}/building{,s}/g

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.