【问题标题】:Select and substitute whole word before a special character在特殊字符之前选择并替换整个单词
【发布时间】:2018-01-17 10:51:10
【问题描述】:

我的文件中有这个内容:

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

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

【问题讨论】:

  • 你尝试了什么?
  • @romainl 我无法弄清楚如何做到这一点,我的知识有限,比如 \b 可以选择整个单词。我不知道如何在冒号后左移以及如何省略空格。

标签: vim substitution


【解决方案1】:

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

/\w\+\ze\s*:

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

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

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

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

然后“引用”这些结果:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2014-06-18
    • 2012-11-21
    相关资源
    最近更新 更多