由于我正在使用的领域特定语言的古怪之处,我经常面临的任务是(选择性地而非全局性地)分别用termTERM替换wordWORD

这意味着,我不区分大小写地搜索term,并想用word替换它,同时保持原始term的大写/小写不变。

因为检查整个term的大小写一致是困难的,并且并不是必须的,我会决定word的大写/小写/ WORD的首字母决定。

我该如何实现?

评论

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

#1 楼

Michaels Geddes的插件keepcase满足您的所有需求:

:%SubstituteCase/\cterm/word/g


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

评论


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

–DevSolar
2015年12月2日,11:03

#2 楼

可以通过废除插件中的: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



评论


Vimcasts情节:用:Subvert替代

– Peter Rincker
15年2月2日在15:22