vim - vim:如何通过匹配第一部分来查找单词,删除第一部分然后在单词末尾添加一个字符串
问题描述
在我们的代码中,我们的变量有非标准的命名约定。例如,我们有一个附加到文件中许多变量的类别标识符,例如:usa_foo
, bar_usa
,其中usa
是类别标识符。我想将所有这些名称转换为最后放置类别 id 的标准,所以usa_foo
会变成foo_usa
. 由于这些变量通常嵌入在表达式中,因此它们后面可以跟一些可能的字符,在这种情况下(hashicorp hcl 语言),主要是、 "
或空格。例如,我想转:]
,
usa_foo = something
something "${var.usa_foo}"
b = [var.usa_foo, var.bar_usa]
bar_usa
进入:
foo_usa = something
something "${var.foo_usa}"
b = [var.foo_usa, var.bar_usa]
bar_usa
如果我知道单词后面的字符,我知道如何查找和替换,比如说"
。那么它将是
%s/usa_\(\w*\)"\(.*\)/\1_usa"\2/g
但是,我不确定如何匹配多个结尾字符并且仍然做同样的事情。
解决方案
使用非常神奇的方法来避免反斜杠
:%s/\v(usa)(_)(foo)/\3\2\1
\v ................... very magic
() ................... regex group with no backslash
注意:我们将第二组保留在中间,只需将 1 换成 3
当然,如果您在同一行有其他事件,您应该添加/g
推荐阅读
- file - FFmpeg 批处理文件 - 将单个集合文件与另一组文件中的随机选择相结合
- android - 在android studio中的真实设备中运行应用程序时按钮不起作用
- php - 无法在 php 中解码 JSON 文件
- graphql - graphql JS中@relayhash值有什么用
- c# - 如何从 Postman To WebApi 获取表单数据
- apache-flink - 如何在远程环境中使用保存点运行 Flink 作业?
- java - 包装类对象初始化如何工作?
- c# - IdentityServer4 ASP.NET Core Identity 不会重定向回客户端
- python - 使用 cumsum 找到独特的章节
- javascript - 在 HighChart 中进行向下钻取,键入-line