填写相等/身份(== / ===)必要时使用空格(vim)

时间:2011-10-29 01:56:45

标签: javascript regex vim

如果存在自动美化我的js代码的工具,那么我宁愿使用该包。

我想扩展所有这样的声明:

var n=x+(y+(z/k))-123;

变成:

var n = x + (y + (z / k)) - 123;

但是,目前我想将所有狭窄的======语句转换为自己的填充版本。

我尝试使用像:%s/[^ ]==[^ ]/ == /g之类的东西,但问题在于它会剪切前面和后续角色。

2 个答案:

答案 0 :(得分:4)

在Vim中,您可以使用以下内容:

:%s!\s*\([!<>=/*+-]\+\)\s*! \1 !g

说明:

  • s - 替换
  • ! - 开始模式
  • \s* - 零个或多个空格
  • \( - 启动小组
  • [!<>=/*+-]\+ - !<>=/*+-
  • 中的一个或多个
  • \) - 小组结尾
  • \s*零个或多个空格
  • !模式结束,替换开始
  • <space>\1<space> - 按空格填充的匹配组
  • ! - 替换完毕
  • g - 全局一行

但是如果你想要美化代码并坚持使用定义的编码标准,那么最好使用像Artistic Style这样的工具。

答案 1 :(得分:2)

这需要多个命令,但您可以尝试类似:

:%s/\([^\s]\)\([+\/()-=]\)/\1 \2/g
:%s/\([+\/()-=]\)\([^\s]\)/\1 \2/g

:%s/\([^\s]\)==/\1 ==/g
:%s/==\([^\s]\)/== \1/g

Then do those last 2 for each: !=, >=, <=, etc..