Tab键在Python等语言中不能用于多行缩进,因其默认触发补全而非缩进;Ctrl+]和Ctrl+[才是唯一可靠路径,但需先选中目标行并确保缩进统一为空格。

多行缩进为什么不能用 Tab 键
在 Python、JavaScript 等语言中,按 Tab 键默认触发补全(比如函数提示、Emmet 展开),不是缩进。尤其光标在字符串内、引号后或括号中间时,Tab 几乎从不缩进,只弹菜单。右下角显示为 Plain Text 时,Tab 插入原始 \t,不识别语法结构;而 detect_indentation 开启时,Sublime 会悄悄把你的 Tab 行为重定向为 2 空格或制表符,和你设的 tab_size 冲突。
Ctrl+] 和 Ctrl+[ 是唯一可靠操作路径
这两个快捷键专为块级缩进设计:不分析语法、不触发补全、不矫正空格数,只机械增减一级缩进量。但行为严格依赖上下文:
- 未选中任何内容时,只作用于当前行首
- 必须先选中目标行——推荐用
Ctrl+Shift+M(选括号内)或Ctrl+Shift+J(选同缩进块),比鼠标拖更准 - 混用空格和
\t的文件,Ctrl+]可能插入一个\t而非 4 个空格,务必先执行Convert Indentation to Spaces - 对
.json、.md、.txt等无语法约束文件同样生效
已有代码缩进混乱怎么安全修复
别直接 Ctrl+A + Ctrl+]——这会误缩字符串里的 \t 或对齐注释,导致语法错误。正确顺序是:
- 确认右下角状态栏显示
Spaces: 4(不是Tab) - 执行
Convert Indentation → To Spaces,统一为空格 - 再执行
Indentation → Reindent,让 Sublime 按语法规则(冒号、括号、换行等)重算每行缩进 - 若
Reindent没反应,大概率是detect_indentation在后台锁定历史风格,临时关掉它再试一次
缩进线断续或不显示?检查三个硬条件
缩进参考线(左侧竖线)不是“开了就出”,必须同时满足:
-
draw_indent_guides设为true -
indent_guide_options是数组,且包含"draw_normal"(例如:["draw_normal", "draw_active"]) - 缩进字符统一:执行
Convert Indentation to Spaces后再看,混用\t和空格会导致线断
已打开的文件改完设置需切换 Tab 再切回来才重绘,不用重启。如果仍不显示,优先检查右下角语法是否准确(如 Vue 的 <script></script> 块被识别为 HTML),再确认字体是否为等宽(如 Fira Code)。

















