如何让vim按字母顺序在一行内对CSS规则进行排序?

时间:2012-05-21 14:28:47

标签: css sorting vim

来源:

.foo { line-height: 150px; font-size: 24px; clear: both; }

vim魔术在这里,可能是基于视觉选择的

结果:

.foo { clear: both; font-size: 24px; line-height: 150px; }

你对vim魔法部分有什么建议?

3 个答案:

答案 0 :(得分:6)

:s/\([{;]\)\s*/\1\r/g | '[+1,']sort | '[,']join

拆分{;上的行,将每个规则分成一行,:sort(省略包含CSS定义的第一行),然后将它们重新连接在一起。

答案 1 :(得分:2)

非常快速的答案:

:s/[{;] /\0\r
vi{
:!sort
va{
J

答案 2 :(得分:1)

另一个单行:

s/{\s*\zs.\{-}\ze\s*}/\=join(sort(split(submatch(0), '\s*;\s*')), '; ').';'

这次我们使用sub-replace-\=和列表操作函数(sort()split()join()