sublime 的 sort_lines 默认按每行首非空白字符的 ascii 值纯文本字典序排序,不识别 css 语法;z-index 排在 width 后(z>w),color 排在 background 前(c

Sublime 里 sort_lines 默认怎么排 CSS 属性?
它不识别 CSS 语法,只按每行第一个非空白字符的 ASCII 值排序——也就是纯文本字典序。所以 z-index: 10; 一定排在 width: 200px; 后面,因为 z 的 ASCII 值大于 w;Color: red;(大写 C)会排在 background: #fff; 前面,因为大写字母 ASCII 值更小。
要让它“看起来合理”,必须满足三个前提:
- 每行只写一个声明,且以属性名开头(不能有前导空格、注释或缩进)
- 属性名统一小写(
color而非Color或COLOR) - 避免混用 vendor prefix,比如
-webkit-border-radius和border-radius会因-符号被排到最前
为什么选中后按 Ctrl+F9 没反应或排错位置?
不是快捷键失效,而是 sort_lines 对选区极其敏感。常见失效场景:
- 只点了一下光标,没拖选 → 它会对整个文件排序
- 鼠标框选时只选中了单词部分(非整行)→ Sublime 不识别为多行操作,命令静默失败
- 跨行选择但最后一行没包含换行符 → 该行被完全忽略
- 某行开头全是空格或制表符 → 它跳过空白取第一个可见字符;若整行为空白,则排在最前面
验证是否选区有效:看右下角状态栏是否显示类似 “5 lines” —— 必须带 lines 字样才算成功。
如何让 CSS 属性真正按标准字母序排列(如 W3C 推荐顺序)?
原生 sort_lines 只能做基础字典序,无法按“display → position → top → left → width → height → …”这类语义分组排。真要接近规范顺序,得靠插件:
- 装
CSSComb插件,配.csscomb.json,支持按 W3C 分组规则排序(但不处理@media内部) - 用
Sort Lines插件 + 手动预处理:把margin、padding等复合属性拆成单行,再统一转小写,最后Ctrl+F9 - 别依赖自动排序处理
grid-template-areas或clip-path这类值含空格/括号的声明——它们会被截断或错位
JSON 键值对能用 sort_lines 排吗?
可以,但风险高。前提是格式严格规整:
- 每行一个
"key": value,无换行、无逗号悬垂、无注释 - 所有 key 都用双引号包裹,且引号前无空格(
"name":✅,name:❌,"name":❌) - 避免 key 中含特殊字符,比如
"user-id"和"user_id"会因-和_ASCII 值不同而乱序
更稳妥的做法是复制到 VS Code 或用命令行 jq -S 处理后再粘回——Sublime 的字符串排序对结构化数据始终是“尽力而为”,不是“语义保证”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











