在vim上搜索并转换为小写

时间:2018-09-19 15:31:55

标签: regex linux vim

我有一个object.attribute代码,其中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]

4 个答案:

答案 0 :(得分:2)

您基本上只需要两件事:

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

这将为您提供以下命令:

:%substitute/\<object\.\(\w\+\)/self.\L\1/g

注意:

  • 我已经在开头建立了关键字开始断言\<),以避免也与schlobject匹配。
  • \w\+匹配字母,数字和下划线(因此可以满足您的示例);这里有多种选择。

答案 1 :(得分:0)

sed -E 's/object\.([^ \(]*)(.*)/self.lowercase(\1)\2/g' file_name.txt

以上命令认为您的属性后跟空格或“(”

您可以根据自己的需要调整该命令

答案 2 :(得分:-1)

在命令模式下尝试此

:1,$ s/object.attribute/self.lowercase(attribute)/g

答案 3 :(得分:-1)

根据您上面的评论,该属性部分 ”按空格或[或(“ 完成,您可以将其与以下项匹配:

/object\.[^ [(]*

因此,要将其替换为self.attribute,请使用捕获 组和\L使所有内容变为小写:

:%s/\vobject\.([^ [(]*)/self.\L\1/g