notepad++默认按tab键插入\t字符而非空格,需在“设置→首选项→语言”中勾选“将tab替换为空格”并设宽度为4,否则易致python/yaml等缩进报错;已打开文件需先编辑或重开才生效。

Notepad++按Tab键插入的是\t,不是空格
默认情况下,Notepad++ 的 Tab 键插入的是真实制表符 \t,不是空格。Python、YAML、TOML 或 Git diff 等工具对缩进敏感,混用 \t 和空格极易触发 IndentationError 或 mixed-indentation 报错。
光靠肉眼无法区分——\t 和 4 个空格在编辑器里看起来完全一样。必须主动干预输入行为或事后清理,不能靠“感觉”。
- 验证方式:打开
视图 → 显示符号 → 显示空格与制表符,\t显示为→,空格显示为· - 新建文件后按一次
Tab,若看到→,说明尚未启用替换;若看到 4 个·,才表示生效 - 注意:
显示所有字符会把\r\n、\n也标出来,干扰判断,别开
全局启用“Tab转空格”并设宽度为4
这是最常用、也最稳妥的设置,影响所有新建/新打开的文件(但不改变已打开且未编辑过的文件)。
路径:设置 → 首选项 → 语言(新版 Notepad++ 7.1+ 已移除独立的“制表符设置”页)
- 勾选
将Tab替换为空格(英文界面为Replace by space) - 设置
Tab键宽度为4 - 点
关闭生效,无需重启
⚠️ 容易踩的坑:
- 改完没点
关闭或直接关窗口,设置不保存 - 在
语言格式设置(即设置 → 语言格式设置)里单独给 Python 设了Tab 大小 = 2,但没同步改全局的Tab键宽度,结果按Tab插入 2 个空格,和项目规范冲突 - 某些语言(如 Python)在
语言格式设置中有独立配置,会覆盖全局值——建议统一在首选项 → 语言下设,并确保语言格式设置中对应语言的Tab 大小一致且已点保存
对已有文件批量把\t转成空格
适用于接手老项目、Git 拉下来的脚本,或临时修复缩进混乱的文件。这个操作是一次性文本替换,不改变后续输入行为。
路径:编辑 → 空白字符操作 → TAB转空格
- 必须先让光标落在目标文件内(不能是新建空白页)
- 执行后,文档中所有
\t会被替换成当前语言设置下的等效空格数(例如 Python 模式下设了Tab 大小 = 4,就转成 4 个空格) - 若要反向转换(空格→
\t),选同菜单下的TAB转制表符
⚠️ 注意:
- 该操作会替换全文所有
\t,包括字符串字面量里的(如"\tkey"),可能误伤——如果文件里有带\t的字符串,建议手动处理或加正则限定范围 - 执行后,光标位置不会自动重置,缩进视觉可能突变(比如原来
\t对齐到第 8 列,现在插 4 空格,对齐位置偏移)
为什么改了设置,按Tab还是出→?
常见于已打开的旧文件,尤其那些从磁盘加载后尚未编辑过的文档。Notepad++ 对这类文件会沿用原始编码/格式状态,即使全局设置了 将Tab替换为空格,也不会动态接管输入行为。
- 解决方法:在该文件中任意位置敲一个字母(哪怕删掉再撤销),让它进入“已修改”状态,之后
Tab就会按新规则插入空格 - 或者直接执行一次
编辑 → 空白字符操作 → TAB转空格,强制刷新整份文档的缩进表现 - 更彻底的办法:关掉该文件,重新打开——新加载时会读取当前全局设置
真正容易被忽略的是:语言模式切换(比如从 Normal text 切到 Python)会触发对应语言的缩进配置,而你可能根本没注意右下角状态栏的语言标识已变。











