Vim捕获组有多余的空间

时间:2019-03-22 14:00:07

标签: regex vim

上下文是我将React props定义复制粘贴到函数参数中,这样就不必一一键入变量名:

// Select these 3 lines with V3j  
MyComponent.propTypes = {
  formName: PropTypes.string.isRequired,
  formPurpose: PropTypes.string.isRequired,
  formPlaceholder: PropTypes.string.isRequired,
};

<MyComponent
  // Past here with the output below  <-----------  expeted output
  formName={formName}
  formPurpose={formPurpose}
  formPlaceholder={formPlaceholder}
/>

要删除: PropTypes.string.isRequired并将其更改为={variableNameHere},我正在使用以下Vim正则表达式:

:'<,'>s/\(.*\)\zs:.*/={\1}/g

这应该捕获变量名,删除:之后的所有内容,并将捕获内容放在={}上的大括号内。

结果如下:

formName={  formName}
formPurpose={  formPurpose}
formPlaceholder={  formPlaceholder}

{之后有一个多余的空间,我无法弄清楚正则表达式中的空间是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

使用

:'<,'>s/[[:blank:]]*\(.*\)\zs:.*/={\1}/g

获得的空格是表达前的前导空格。