【问题标题】:Fixing Sass / SCSS bracket indentation修复 Sass / SCSS 括号缩进
【发布时间】:2016-02-16 14:59:01
【问题描述】:

我为大家准备了一个正则表达式难题!

大约一周前,我决定更改我的 Sass 文件的格式:

a {
  color: red;
  text-decoration: none;

  &:hover: {
    color: blue;
    text-decoration: underline;
  }
}

div { ... }

到这里:

a {
  color: red;
  text-decoration: none;

  &:hover: {
    color: blue;
    text-decoration: underline; } }

div { ... }

第二种语法看起来不错——它节省了行数并提高了可读性——但它实际上是编写代码的灾难。想象一下,如果我想在 a:hover 的文本装饰之后添加另一行:我必须带上这两个括号。

无论如何,我一直在尝试找到完美的正则表达式来更改格式,但无济于事。

我的想法:

  1. 匹配并捕获 2 个空格,因为所有右括号都至少缩进一级:(\s{2})
  2. 匹配并捕获所有其他空格:(\s*)
  3. 匹配并捕获所有其他字符(我的 CSS 代码):(.*)
  4. 匹配空格+右括号:}

将其替换为两行: \1\2\3\n\2}

目前还不能完全正常工作。欣赏任何想法。

【问题讨论】:

  • 强制性“CSS/SCSS 不是常规语言”喋喋不休。
  • 不知道。我的 CS 教授会很生气。
  • 为什么不用 SASS 而不是 SCSS?它支持所有相同的功能,但没有冗长的 { } 字符——在这方面它更像 Python,并且更接近你的新风格
  • 已经想到了。调查它,但仍然会喜欢这个解决方案。

标签: css regex formatting sed sass


【解决方案1】:

正如您所发现的,正则表达式不会真正起作用,因为含义/所需位置取决于之前对 Document 的解析。

您需要一个解析器或过滤器来完成这项工作。

幸运的是,标准的 JS beautifierCSS indenter 应该会将该文件立即恢复原状。


PS:还要考虑更频繁的备份和版本控制。 (^_^)

【讨论】:

  • 我当然在使用版本控制,但我已经做了一周的更改,将它们与旧语法和新语法合并可能会很痛苦。
  • 使用 C 风格的 Tabifier。把它变成一个足够易于管理的形式供我使用。谢谢!
【解决方案2】:

另一种简单的方法是在编辑器上进行快速替换,无需正则表达式,只需使其匹配空格,替换为新的括号/行。不过可能不如使用 css 重新缩进器快。

【讨论】:

  • 除非您有有意义的补充,否则不要碰旧问题。这并没有以有意义的方式回答问题。
  • 对不起,我虽然侧链接是较新的问题。没看到日期。这是一个替代解决方案,当我想以特定方式缩进一些新的 css 文件或修复它时,我总是这样做。只需几秒钟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 2019-07-27
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
相关资源
最近更新 更多