Ctrl+] 和 Ctrl+[ 是纯文本缩进增减操作,仅修改行首空白,不分析语法或重排结构,适用于所有文件类型。

Ctrl+] 和 Ctrl+[ 是什么,不是什么
它们不是“格式化”命令,只是纯文本级别的缩进增减操作——按一次 Ctrl+] 就加一档缩进(一个 Tab 或若干空格),Ctrl+[ 则减一档。不分析语法、不重排结构、不自动对齐括号,只动行首空白。
- 适用所有文件类型:.py、.html、.json、.md 甚至 .txt 都能用
- 选中多行时整块生效;没选中时只作用于当前行
- 和
Ctrl+Shift+P → “Reindent”完全不同:后者会扫描整段代码逻辑并重算缩进,前者就是机械加减 - 如果按了没反应,大概率是语法识别错了——看右下角显示的是不是
HTML或Python,点它手动切对
缩进快捷键失效的三个典型原因
不是快捷键坏了,而是 Sublime 在“帮你守规矩”,结果帮倒忙。
-
"detect_indentation": true(默认开启):打开文件时自动锁定缩进风格,比如识别出是 2 空格,你按Ctrl+]加缩进,它可能悄悄把你多加的那 2 个空格“抹平”回合法倍数 -
"auto_indent": true(默认开启):换行时自动继承上一行缩进,有时会覆盖你刚用快捷键调好的位置 - 当前文件被插件或历史设置“固化”了缩进单位:比如
tab_width是 2,但你习惯用 4 空格缩进,这时Ctrl+]可能插入一个 Tab(=2 字符宽),视觉上缩进不足
临时解法:Ctrl+Shift+P → Set Syntax: Plain Text 切成纯文本再试;长期建议在用户设置里关掉 detect_indentation,或统一用 Indentation: Convert Indentation to Spaces 先归一化。
HTML/JSON/Python 等结构化语言怎么缩得准
靠手按 Ctrl+] 容易漏行、缩错层,尤其嵌套深的时候。得先“选得准”,再“缩得稳”。
- 把光标放在
if、function、<div>行,连按Ctrl+Shift+↓可逐级向下扩展选择整个逻辑块 - 对 JSON/YAML/HTML,优先用
Ctrl+Shift+P → Selection: Expand Selection to Brackets,一键选中配对{}或<>内全部内容 - 确认选区无误后再按
Ctrl+]——比逐行调安全得多,也避免折叠区域展开后错位 - 别依赖“折叠后缩进”:Sublime 的折叠不参与缩进计算,展开即露馅
想让缩进行为完全可控,该改哪几个配置
原生快捷键是通用设计,但团队项目往往要强制风格,比如“一律 4 空格”。这时候就得干预行为本身。
- 最直接:在
Preferences → Key Bindings – User里加自定义绑定,例如让Ctrl+]固定插入 4 个空格:[ { "keys": ["ctrl+]" ], "command": "insert", "args": {"characters": " "} } ] - 更可持续:用
EditorConfig插件 + 项目根目录的.editorconfig文件,写入indent_style = space和indent_size = 4,自动适配文件类型 - 注意:自定义快捷键不感知当前缩进设置,一旦写死就全局生效;而 EditorConfig 可随文件后缀切换规则,更适合混合项目
真正麻烦的不是“怎么缩”,而是缩完之后别人打开文件,又因为 detect_indentation 自动还原成他们本地的风格——这个隐性冲突,比快捷键记不住更难排查。

















