tab size和replace by space必须配对设置:tab size决定\t显示宽度,replace by space决定按tab键插入空格还是\t,两者数值需一致(如python设为4),且以状态栏显示的“4 sp”为准;语言专属设置优先于全局设置,已打开文件需编辑后才生效。

Tab size 和 Replace by space 必须配对设置
只改显示宽度或只开空格替换,缩进都会出问题。Notepad++ 里 Tab size 控制一个 \t 显示占几格,Replace by space 才决定你按 Tab 键时写入的是 \t 还是空格序列。两者数值必须一致,否则 Python 会报 IndentationError,Git diff 会标出 mixed-indentation。
- 想用 4 空格缩进:勾选
Replace by space,同时把Tab size设为4 - 想用 2 空格(如某些前端项目):
Tab size改成2,Replace by space仍需勾选 - 设成
8却没勾Replace by space?按Tab还是插入\t,但其他编辑器可能渲染成 8 格,协作时容易错位
语言模式优先级高于全局设置
打开一个 .py 文件,实际生效的是 Python 语言专属设置,不是“默认”或“纯文本”里的值。如果你在 设置 → 首选项 → 语言 页调了 Tab size,但右下角状态栏显示的是 Python,那真正起作用的是 设置 → 语言格式设置 → Python → Tab 大小。
- 必须点
保存按钮,不点等于没设 - 状态栏显示
4 SP或4 TAB才是真实生效状态,比任何设置窗口都准 - 如果状态栏是
Normal text,说明文件没被识别为对应语言,Tab行为走兜底规则
已打开文件不会自动继承新设置
改完设置后,已打开且未修改过的文件不会立刻响应——光标没进入编辑状态时,Tab 键仍可能插入 \t。这不是 Bug,是 Notepad++ 的缓存机制。
- 新开文件或新建文档才会按新设置行为执行
- 对当前文件临时生效:光标置于其中 →
编辑 → 空白字符操作 → TAB 转空格(注意:这只是批量替换已有\t,不改变后续输入行为) - 想让当前文件也按新规则输入:先按一次
Tab插入内容,再删掉,触发编辑器重判缩进模式
验证是否真生效:靠显示符号,别靠肉眼
不开 视图 → 显示符号 → 显示空白字符(快捷键 Ctrl+Shift+P),你根本分不清是 \t 还是空格。Python 缩进错误往往就卡在这一步。
-
→是\t,·是空格 - 新建一行,按一下
Tab:看到 4 个·才算成功;看到→就说明Replace by space没勾或没生效 - 状态栏右下角那个小小的
4 SP是唯一可信信号,它变,行为才真变











