Select 并在特殊字符前替换整个单词

Select and substitute whole word before a special character

我的文件中有以下内容:

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

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

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

/\w\+\ze\s*:

要同时匹配一行中可能的最后一个单词(第 onTabClick 行),您可以在冒号 / EOL 处使用或修改先前的模式:

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

在这种情况下,启用 very-magic 来简化转义可能更容易:

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

然后"quote"这些结果:

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