Vim Ex模式regex:如何进行区分大小写的单词交换



我遇到的一个常见障碍是希望用替换词替换单词的所有出现,但也要替换大小写变体。我想在一个命令中完成此操作。示例:

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

Nifty正则表达式:
:%s/Something/Clever/g

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

有没有什么方法可以以比执行以下两个命令更快的整洁方式执行此替换
:%s/Bananas/Grapes/g
:%s/bananas/grapes/g

有几个插件允许这样做:

  • SmartCase:
:%s/bananas/=SmartCase("grapes")/ig
  • 我的SmartCase分叉:
:%SmartCase/bananas/grapes/g
  • 废除:
:%Subvert/{b,B}ananas/{g,G}rapes/g

您还有来自keepcase.vim 的:SubstituteCase

:SubstituteCase#ctoto(Titi)tata#1Tutu#g
     totoTitiTata -> titiTutu
     TotoTitiTata -> TitiTutu
     tototititata -> tititutu
     tototitiTata -> titiTutu
     TototitiTata -> TitiTutu 

如果设置了ignorecase:

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

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

最新更新