python多行缩进应使用ctrl+[和ctrl+]而非tab键,因tab默认触发补全;需先选中目标行,确保语法识别为python,统一空格缩进,并在python.sublime-settings中正确配置tab_size和translate_tabs_to_spaces。

多行缩进为什么不能用 Tab 键
在 Python 文件里按 Tab 缩进多行,大概率没反应、缩错行、甚至触发补全菜单——这不是快捷键失效,而是 Tab 默认绑定的是「补全」而非「缩进」。尤其当光标停在字符串内、函数名后或引号中间时,Tab 会优先弹出提示,完全不碰缩进。
- Python 文件右下角显示为
Plain Text时,Tab只插入原始制表符,不识别冒号、括号等语法结构 -
detect_indentation开启状态下,Sublime 会扫描文件开头几行,悄悄把你的Tab行为重定向为 2 空格或 Tab 字符,和你设的tab_size冲突 - 插件如 Emmet、AutoFileName 会劫持
Tab,哪怕你关了补全,它也可能吞掉按键
Ctrl+] 和 Ctrl+[ 是 Python 多行缩进唯一可靠路径
这两个命令专为块级缩进设计,不分析语法、不触发补全、不矫正空格数,只机械加减缩进量。对 Python 来说,它严格保持相对层级:选中 if 块里的 print 和 return,按一次 Ctrl+],两者统一右移一档,不会把 return 拉到和 if 同列。
- 必须先选中目标行:用
Ctrl+Shift+M(选括号内)或Ctrl+Shift+J(选同缩进块),比鼠标拖更准 - 未选中时,
Ctrl+]只作用于当前行首,适合微调单行(比如补一个else的缩进) - 混用空格和 Tab 的文件,先执行
Convert Indentation → To Spaces,否则Ctrl+]可能插入\t而非 4 空格
Reindent 命令才是修复 Python 缩进混乱的终极手段
粘贴代码、跨编辑器协作、或手抖删多了空格后,靠手动 Ctrl+] 很容易错位。此时 Reindent 会根据 Python 语法规则(冒号、括号、冒号后换行等)自动重算每一行该缩进多少,比人眼判断更准。
- 不用全选,只要光标落在目标代码块任意位置,执行
Ctrl+Shift+P→ 输入Reindent即可 - 前提是右下角语法必须是
Python,不是Plain Text或HTML(Vue 单文件组件里<script></script>块常被误判) - 如果执行后没变化,八成是
detect_indentation在后台强行锁定历史风格,临时关闭它再试一次
语法专属设置不生效?Python.sublime-settings 必须单独配
全局设置里的 "tab_size": 4 对 .py 文件基本无效——Python 语言包自带硬编码的 Python.sublime-settings,默认 "tab_size": 2 且 "translate_tabs_to_spaces": false,会覆盖用户设置。
- 打开任意
.py文件 → 点右下角Python→ 选Open Syntax Specific Preferences - 在弹出的 JSON 中只保留这两项:
"tab_size": 4和"translate_tabs_to_spaces": true - 已打开的文件需执行
Ctrl+Shift+P→ 输入Reload Syntax才刷新生效 - 别碰
Settings – Default,那是只读的,改了也白改
detect_indentation 在后台静默覆盖配置——这三件事没理清,按再多 Ctrl+] 都只是在修表面。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











