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

时间:2015-03-31 13:12:33

标签: regex vim

我遇到的一个常见障碍是希望用替换词取代所有出现的词,而且替换它的替代词。我想在一个命令中执行此操作。例如:

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

Nifty regex:
:%s/Something/Clever/g

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

有没有办法以一种比以下命令更快的方式执行此替换? :%s/Bananas/Grapes/g
:%s/bananas/grapes/g

3 个答案:

答案 0 :(得分:2)

有几个插件允许这样做:

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

答案 1 :(得分:1)

您还有来自keepcase.vim

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

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

答案 2 :(得分:0)

如果设置了ignorecase:

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

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