sublime text原生缩进快捷键为ctrl+](增缩进)和ctrl+[(减缩进),windows/linux通用,macos用cmd+]和cmd+[;它们直接修改行首空白符,不依赖插件、不触发补全、不分析语法,适用于所有文件类型。

Ctrl+] 和 Ctrl+[ 就是缩进快捷键,别配别的
Sublime Text 原生就带一对可靠缩进快捷键:Ctrl+](增加缩进)、Ctrl+[(减少缩进),Windows/Linux 通用;macOS 用 Cmd+] 和 Cmd+[。它们不是“可选功能”,而是编辑器底层命令,不依赖插件、不触发补全、不分析语法——只改行首空白符。
常见错误现象:按 Tab 或 Shift+Tab 没反应、弹出补全菜单、只缩当前光标列、在 JSON 或 Vue 的 <script></script> 块里失效……这些都不是快捷键坏了,是 Tab 根本不是为缩进设计的。
-
Tab在 Sublime 中默认绑定的是insert_best_completion或expand_abbreviation_by_tab(Emmet),不是缩进行为 - 没选中任何内容时,
Ctrl+]只作用于当前行;选中多行后,整块统一增减一档(由tab_size和translate_tabs_to_spaces决定) - 对
.json、.md、.txt等无语法文件也完全有效,而Tab在这些文件里常被禁用或降级为插入空格
按了 Ctrl+] 没反应?先查这三件事
这不是快捷键失效,是 Sublime 的缩进逻辑被卡住了。右下角状态栏会悄悄告诉你问题在哪:
- 语法识别错:比如 Vue 单文件组件的
<script></script>块被当成 HTML,点右下角语法名手动切到JavaScript - 混用空格和 Tab:执行
Ctrl+Shift+P→ 输入Indentation: Convert Indentation to Spaces先归一化 -
detect_indentation开着(默认true):它会扫描文件前几行,把tab_size锁死为历史风格(比如你打开一个 2 空格的旧 Python 文件,Ctrl+]加的缩进可能立刻被“抹平”回 2 的倍数)
临时解法:切到 Plain Text 语法再试;长期解法:在 Preferences → Settings – User 中加 "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键和Ctrl+]都插\t - Python 文件要单独配:打开
.py文件 → 右下角点语法名 →Open Syntax Specific Preferences→ 写入这两项(全局设置对.py基本无效) - 若团队强制统一 4 空格且不想被任何文件干扰,可在
Preferences → Key Bindings – User中加自定义绑定:[ {"keys": ["ctrl+]"], "command": "insert", "args": {"characters": " "}} ]注意:这会完全绕过所有缩进设置,适合风格严格的项目
多行缩进前,选区比快捷键更重要
靠手按 Ctrl+] 容易漏行或错层。嵌套结构缩得准的关键是先选得准:
- 把光标放在函数/类/块起始行(如
def func():),连按Ctrl+Shift+↓可逐级扩展选中整个逻辑块 - 对括号或标签结构,用
Ctrl+Shift+P→Selection: Expand Selection to Brackets,一键选中配对符号内全部内容 - 避免直接
Ctrl+A后按Ctrl+]:会误缩字符串里的\t或对齐注释,导致语法错误
真正容易被忽略的是:Sublime 的缩进操作永远基于「当前视图的 tab_size」和「文件实际使用的缩进字符」。混合空格与 Tab 的文件里批量按 Ctrl+[,有些行删空格、有些删 \t,视觉错位不是 bug,是你得先统一风格再操作。











