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
但这更像是一个技巧(// 代表之前搜索的模式,即香蕉)而不是解决方案,我宁愿使用其他人建议的插件。
我遇到的一个常见障碍是想要用它的替换词替换所有出现的单词,还有它的替代大小写变体。我想在一个命令中执行此操作。示例:
原文:
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
但这更像是一个技巧(// 代表之前搜索的模式,即香蕉)而不是解决方案,我宁愿使用其他人建议的插件。