【问题标题】:Sublime Text 2: How to reformat CSS to specific (non-standard) styles?Sublime Text 2:如何将 CSS 重新格式化为特定(非标准)样式?
【发布时间】:2015-05-04 16:19:14
【问题描述】:

有多种 CSS 格式化程序可以做到这一点:

.classname {
  style: value;
  style: value;
}
.classname {
  style: value;
}

把它变成这样:

.classname { style: value; style: value; }
.classname { style: value; }

问题是我的个人偏好与很多其他人的偏好不一致。这很好,因为我不是一个常见的用例,所以我不希望有任何东西。我想拿第一个例子,把它变成这样:

.classname {
  style: value;
  style: value;
}
.classname { style: value; }

具有多种样式的所有类都在自己的行中,但只有一种样式的每个类都很紧凑。

我可以解决一些我可以在 Sublime Text 2 中搜索的正则表达式,它可以让我找到像这样的单一样式类的每个实例,然后在找到之后进行编辑以成为我想要的。这对我来说非常好,并且在我继承大型样式表时会有所帮助。正如您可能想象的那样,对于这些大床单,我通常不会手工操作,而只能忍受它。我希望有一个简单的解决方案,比如在没有插件的情况下搜索正则表达式或其他东西。

【问题讨论】:

  • 我的 CSS 也是这样做的,我从没想过这很奇怪。
  • 我也不认为这很奇怪,但我从来没有得到过这样的样式表。第一个示例总是 5000 行。它让我相信这并不像我想要的那样普遍。
  • 到目前为止的问题很好,但是...请您做以下作业:1. 添加您所期望的内容,例如This is my CSS. I'd like to press a button somewhere and the buffer should look like that.I'd like to select some lines, press a button ...。 2.考虑一下CSS重新格式化是否真的值得构建插件或复杂的RegEx'(根据其他人的偏好:在多开发人员项目中,当您一键重新格式化代码时,您可能会惹恼其他人。请考虑改变主意并强制执行每个人都应该遵守的代码样式指南)。
  • 好吧,就像我说的那样,我不希望会有插件,我怀疑会有。所以我要的是一个我可以搜索的正则表达式,它会找到每一行。就其他人的喜好而言,我既参与了指南的编写,也只是在不同的工作中遵循它们。老实说,个人的使用责任确实不在这个问题的范围内。
  • 这是一个很好的 CSS 编码入门,cssguidelin.es。并不是说任何人都必须严格遵守其中的所有内容,只是很高兴看到建立了基线。

标签: css regex sublimetext2 sublimetext sublime-text-plugin


【解决方案1】:

基本的转换可以通过正则表达式替换来完成。我会这样做:

第 1 步: \nNOTHING 删除所有换行符

第 2 步: [\s\t]{1,} 更改多空格/制表符顶部一个空格(可能很好)

第 3 步: \}}NEWLINE 在 }

第 4 步: \s+(\})|(\{)\s+\1\2 删除大括号前后的单个空格(可能很好)

没有为搜索和替换创建自定义键绑定的内置功能,但有一个插件可以做到这一点:

https://github.com/facelessuser/RegReplace

Reg Replace 是 Sublime Text 2 的插件,允许创建由查找和替换指令序列组成的命令。

键绑定和 RegReplace 配置可能如下所示...

RegReplace

{
    "replacements": {
        "strip_newlines": {
            "find": "\\n", "greedy": true, "case": false,
            "replace": ""
        },
        "reduce_multispace": {
            "find": "[\\s\\t]{1,}", "greedy": true, "case": false,
            "replace": ""
        },
        "break_after_closecurlybrace": {
            "find": "\\}", "greedy": true, "case": false,
            "replace": "\\}\n"
        },
        "strip_space_around_curlybraces": {
            "find": "\s+(\})|(\{)\s+", "greedy": true, "case": false,
            "replace": "\\1\\2"
        }
    }
}

键绑定

{
    "caption": "Make my odd formatting",
    "command": "reg_replace",
    "args": {
        "replacements": ["strip_newlines", "reduce_multispace", "break_after_closecurlybrace", "strip_space_around_curlybraces"]
    }
}

两者都完全未经测试

【讨论】:

  • 这是一个很好的起点。谢谢。它仍然没有区分具有多个声明的元素,但它是一个开始的地方。
  • 我认为编写插件是一种更好的方法,因为您可以做更具体的事情。也许有独立的 CSS 格式化工具。该插件还可以运行该工具并使用重新格式化的 CSS 更新缓冲区。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
相关资源
最近更新 更多