Notepad++ 不支持一键多光标选中所有相同单字符,但可通过「查找 → 全部标记」高亮并跳转所有匹配项,再结合替换或列编辑实现批量处理;Ctrl+D 仅适用于完整单词,对单字符无效。

Notepad++ 没有“一键选中所有相同字符”的原生功能,但可通过「查找 → 全部标记」+「标记跳转」组合实现等效效果——它不创建多光标选区,而是高亮并定位全部匹配项,后续可批量编辑。
为什么不能直接多光标选中所有相同字符
Notepad++ 的多光标机制(Alt + 鼠标点击 / Ctrl + 鼠标点击)只支持手动添加光标,不支持自动识别并选中所有相同单字符(如所有 a、所有 : 或所有空格)。它的 Ctrl+D 是“选中当前词并加下一个同词光标”,仅作用于完整单词,对单字符无效。
常见误操作:双击一个 = 后按 Ctrl+D,结果无反应——因为 = 不被识别为“单词”,Ctrl+D 逻辑失效。
- 单字符(如
{、"、;)默认不触发词级匹配 - 即使启用「高亮所有相同词」,也只高亮,不生成可编辑的多光标
- 正则查找能定位,但不会自动选中;需配合标记或替换才能批量处理
用「全部标记」模拟“选中所有相同字符”
这是最稳定、无需插件、兼容所有版本(包括最新 v8.x)的方法。本质是把目标字符当作查找项,让 Notepad++ 在左侧边栏打标记,并统一高亮背景色,视觉上接近“已选中”。
- 按
Ctrl+F打开查找窗口 - 输入你要找的单字符,例如
"或\t(制表符需勾选“扩展搜索”) - 取消勾选「匹配整个单词」和「区分大小写」(除非你明确需要)
- 点击右下角「全部标记」按钮(不是「查找全部」)
- 此时所有匹配字符会被浅黄色背景高亮,左侧行号旁出现蓝色圆点标记
后续操作:F2 和 Shift+F2 可逐个跳转到每个标记位置;Ctrl+H → 勾选「正则表达式」后,可批量替换(如把所有 ; 替换为 ;\n)。
正则替换前必须注意的边界条件
直接查单字符看似简单,但实际容易因上下文出错。比如想选中所有未被引号包裹的 ,,或排除注释里的 //,就必须用正则约束上下文,否则会误伤。
- 查纯 ASCII 字符(如
a、1、_):直接输入即可,无需转义 - 查特殊字符(如
.、[、$):必须用反斜杠转义,例如查点号要输\. - 查换行符或制表符:切换查找模式为「扩展搜索」,再输入
\r\n或\t - 查 Unicode 字符(如中文顿号、全角逗号):确保文档编码为 UTF-8(格式 → 转为 UTF-8),否则可能匹配失败
一个典型陷阱:Ctrl+F 中输入 (空格)时,若文档含全角空格、不间断空格( )或缩进用的 Tab,它们不会被匹配——得分别用 \x{3000}、\u00A0、\t 单独查。
真正需要多光标编辑时,用列模式或脚本补位
如果最终目标是“在每行某个固定位置插入/删除字符”,比如给 50 行开头都加 #,那不该查字符,而该用列编辑:
- 按住
Alt+ 鼠标左键拖出竖列选区(从第 1 行首到第 50 行首) - 直接输入
#,所有行首同步添加
若逻辑更复杂(如“只在含 ERROR 的行末加 !!”),就得用 PythonScript 插件运行脚本——因为 Notepad++ 原生命令无法条件化批量编辑。
真正难的不是“怎么找”,而是“找完之后要不要保留上下文结构”。比如删所有 /* ... */ 注释中的 *,却不能动代码里的 int* p ——这种必须靠正则断言,稍写错就会破坏语法。动手前,先 Ctrl+S 保存副本。


















