在 vim 上搜索并转换为小写

Bet*_*ish 2 regex linux vim

我有一个代码,object.attribute其中属性可以是数组示例:object.SIZE_OF_IMAGE[0]或简单的字符串。我想搜索所有出现的情况"object.attribute"并将其替换为self.lowercase(attribute)我想要 vim 上的正则表达式来执行此操作。

我可以使用它:%s/object.*/self./gc并手动替换它,但速度非常慢。

这里有些例子:

object.SIZEself.size

object.SIZE_OF_IMAGE[0]self.size_of_image[0]

Ing*_*kat 9

你基本上只需要两件事:

  • 捕获组:help /\(允许您存储之间匹配的内容\(...\),然后在替换中(甚至之后在模式本身中)引用它(通过\1、等)。\2
  • 特殊:help s/\L的替换操作使所有内容都变成小写。

这将为您提供以下命令:

:%substitute/\<object\.\(\w\+\)/self.\L\1/g
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我在开头建立了一个关键字开始断言( )以避免匹配。\<schlobject
  • \w\+匹配字母、数字和下划线(因此它满足您的示例);这里可以有多种替代方案。