ctrl+]和ctrl+[是sublime原生唯一可靠的块级缩进快捷键,专改行首空白、不分析语法、不触发补全;选中多行时整块增减一档,未选中时仅作用于当前行,对.py、.json、.md等所有文件类型均生效。

Ctrl+] 和 Ctrl+[ 就是自动缩进快捷键,别配别的
Sublime Text 没有“设置自动缩进快捷键”这回事——Ctrl+](增加缩进)和Ctrl+[(减少缩进)就是官方原生、唯一可靠的块级缩进命令。它们不是要你去“设置”的功能,而是默认就存在、且行为最稳定的操作。Tab 和 Shift+Tab 在 Sublime 里根本不是缩进键,而是补全触发器,光标一落在函数名后或引号内,按了就弹菜单,缩进失败是常态。
这对组合只干一件事:修改行首空白符(空格或 Tab),不分析语法、不重排结构、不矫正倍数。选中多行时整块增减一档;没选中时只动当前行。对 .py、.json、.md、.txt 全都生效。
按了 Ctrl+] 没反应?先查右下角、缩进类型、detect_indentation
不是快捷键失效,是 Sublime 在“守规矩”时卡住了。常见原因有三个:
- 右下角语法标识错:比如 Vue 文件的
<script></script>块被识别成 HTML,点它手动切到 JavaScript - 混用了空格和 Tab:执行
Ctrl+Shift+P→ 输入Indentation: Convert Indentation to Spaces先归一化 -
"detect_indentation": true(默认开启):它会扫描文件前几行,一旦发现 Tab 或 2 空格,就锁定该风格,你按Ctrl+]加的缩进可能被立刻“抹平”。必须在用户设置里加"detect_indentation": false
想让 Ctrl+] 固定插 4 个空格,而不是一个 Tab
靠默认行为不一定达成,因为缩进输出受两个设置控制:tab_size 控宽度,translate_tabs_to_spaces 控字符类型。但若 translate_tabs_to_spaces 是 false,Ctrl+] 就只插 \t,哪怕 tab_size 设了 4 也没用。
推荐做法:
- 确保用户设置里有
"translate_tabs_to_spaces": true和"tab_size": 4 - Python、JSON 等语言需单独配:先打开一个
.py文件,再进Preferences → Settings – Syntax Specific,右侧加这两行(不要删原有内容) - 如果团队强约束 4 空格且不想被任何文件干扰,可在
Preferences → Key Bindings – User里加自定义绑定:[ {"keys": ["ctrl+]"], "command": "insert", "args": {"characters": " "}} ]注意:这会完全绕过所有缩进设置,适合风格统一的项目
嵌套结构缩得准,关键不在快捷键,而在选区
Ctrl+] 本身不智能,它只机械作用于你选中的行。靠手拖选容易漏行或错层,尤其对 if 块、函数体、JSON {}、HTML <div> 这类结构,优先用精准选区:
<ul>
<li>把光标放在起始行(如 <code>def func():),连按 Ctrl+Shift+↓ 可逐级扩展选中整个逻辑块
Ctrl+Shift+P → Selection: Expand Selection to Brackets,一键选中配对符号内全部内容Ctrl+],缩进才真正“对齐结构”,而不是“看起来缩了”最常被忽略的一点:已有文件里的混合缩进(比如某行开头是 →·→)不会被任何快捷键自动修复,Convert Indentation to Spaces 命令灰掉时,说明 Sublime 拒绝冒险转换——这时必须先可视化空白符("draw_white_space": "all"),再手动清理异常行首,否则后续所有缩进操作都在打补丁。











