Vim Ex 模式正则表达式:如何进行区分大小写的单词交换

Vim Ex mode regex: How to do case-aware word swap

我遇到的一个常见障碍是想要用它的替换词替换所有出现的单词,还有它的替代大小写变体。我想在一个命令中执行此操作。示例:

原文:
Bananas? Ew, I don't like bananas.

漂亮的正则表达式:
:%s/Something/Clever/g

结果:
Grapes? Ew, I don't like grapes.

有没有比执行以下两个命令更快的巧妙方式来执行此替换?
:%s/Bananas/Grapes/g
:%s/bananas/grapes/g

有几个插件允许这样做:

:%s/bananas/\=SmartCase("grapes")/ig
:%SmartCase/bananas/grapes/g
:%Subvert/{b,B}ananas/{g,G}rapes/g

您还有 :SubstituteCase 来自 keepcase.vim

:SubstituteCase#\ctoto\(Titi\)tata#Tutu#g

     totoTitiTata -> titiTutu
     TotoTitiTata -> TitiTutu
     tototititata -> tititutu
     tototitiTata -> titiTutu
     TototitiTata -> TitiTutu 

如果设置了忽略大小写:

:s/bananas/Grapres/|s//grapes

但这更像是一个技巧(// 代表之前搜索的模式,即香蕉)而不是解决方案,我宁愿使用其他人建议的插件。