Vim 在一个 S&R 命令中替换带有或不带有大写字母的单词

Vim 在一个 S&R 命令中替换带有或不带有大写字母的单词

例如我有一段 Java 代码

public String setType(String newType) {
  this.type = newType:
}

我选择所有内容,然后我想搜索并按型号替换类型,但不管首字母是什么,这样类型就会被型号替换,类型就会被型号替换:

public String setModel(String newModel) {
  this.model = newModel:
}

我找不到在 vim 中仅使用一个命令来执行此操作的方法,我尝试了这些命令但没有成功:

:'<.'>s/[tT]ype/[mM]odel/g
:'<.'>s/\(t\|T\)ype/\(m\|M\)odel/g

任何想法?

答案1

你可以使用类似智能保护套

:'<,'>s/type/\=SmartCase('model')/gi

如果没有插件,您还必须使用:help sub-replace-expr

:'<,'>s/\([tT]\)ype/\=submatch(1) ==# 't' ? 'model' : 'Model'/g

相关内容