在特殊字符之前选择并替换整个单词

时间:2018-01-17 10:51:11

标签: vim substitution

我的文件中包含以下内容:

{
  "performanceHighToLow" : {
    tabs     : {
      bySales : "by sales",
      byOrder : "by order"
    },
    category : "performanceHighToLow",
    onTabClick
  },
  performanceLowToHigh : {
    tabs     : {
      bySales : "by sales",
      byOrder : "by order"
    },
    category : "performanceLowToHigh",
    onTabClick
  }
}

我想知道我是否可以写一个正则表达式引用所有引用的词。在同一主题上,有没有办法在冒号(:)出现之前选择完整的单词(单词边界)。

1 个答案:

答案 0 :(得分:2)

要匹配冒号之前的单词,您可以匹配单词字符+可能的空格+冒号,但在单词本身后用\ze停止匹配:

/\w\+\ze\s*:

要匹配行中可能的最后一个单词(行onTabClick),您可以用冒号/ EOL修改前一个模式:

/\w\+\ze\s*\(:\|$\)

在这种情况下,可以更容易启用非常魔术来简化转义:

/\v\w+\ze\s*(:|$)

然后“引用”这些结果:

:%s/\v\w+\ze\s*(:|$)/"&"/g