notepad++双击无法选中user_name是因为当前语言的word characters未包含下划线;需在设置→首选项→语言中为对应语言(如normal text)的word characters添加\_,并重启或切换语言生效。

Notepad++双击选不中user_name?改word characters才管用
Notepad++双击默认只认字母、数字和下划线_为“词内字符”,但前提是当前语言的word characters列表里真有它——很多人误以为开了Python或INI语言就自动支持_,其实不是。比如打开一个没后缀的配置文件,状态栏显示Normal text,那它就按Normal text的语言规则走,而该语言默认word characters可能是0-9a-zA-Z(不含_),导致双击user_name只选中user或name。
- 路径:设置 → 首选项 → 语言 → 左侧选中当前文件对应的语言(如
Normal text、INI、Python) - 右侧
word characters框里确认是否包含_;若没有,手动补上,例如改成0-9a-zA-Z_ - 改完必须重启 Notepad++,或手动点击状态栏语言名切换一次(如从
Normal text切到JSON再切回)才生效 - 别删掉
0-9a-zA-Z——否则双击可能只选中单个字母或数字
为什么加了下划线还是没用?检查语言绑定是否生效
文件后缀没被 Notepad++ 识别时,语言自动 fallback 到Normal text,哪怕你写的是 YAML 或 TOML 内容。此时你在YAML语言里配好了word characters,也完全不起作用。
- 看状态栏右下角显示的语言名,不是文件名后缀——那是真实生效的语言
- 如果显示
Normal text,但你想按INI规则处理,就手动点击状态栏语言名,从弹出菜单选INI - 长期解决办法:设置 → 首选项 → 文件关联 → 把
.conf、.toml等后缀拖进对应语言(如INI)下方 - 注意:
JSON语言默认不含_,所以api_key在 JSON 模式下仍会被拆开,需单独为其配置
Smart Highlighting高亮不全?词边界不一致是主因
开了Smart Highlighting却只高亮部分user_name,不是插件问题,而是双击选中的“词”和文档里其他位置的“词”被解析成不同片段——根源仍在word characters不统一。
- 必须确保所有含
_的标识符,在全文所有出现位置,都被同一套word characters规则包裹 - 比如
user_name在第10行被当整体,但在第50行因前后有括号或引号被截断,说明那行上下文触发了不同分隔逻辑 - 验证方法:双击一个
user_name,看状态栏左下角是否显示“已选择 X 字符”;再把光标移到另一处同名项,按Ctrl + F搜索,看是否能完整匹配user_name(而非user或name) - 如果搜索也不完整,说明
word characters没配对,或当前语言根本没生效
VSCode用户容易踩的坑:别照搬editor.wordSeparators逻辑
VSCode 里删-和_出editor.wordSeparators就能整词选中,但在 Notepad++ 里这是反模式——Notepad++ 不是靠“删分隔符”,而是靠“明确列出词内字符”。
- Notepad++ 没有
wordSeparators配置项,只有word characters白名单 - 想让
user-name也被整词选中?得把-加进word characters,例如0-9a-zA-Z_- - 但加
-有副作用:HTML 标签如data-id也会被连成一块,可能干扰标签跳转——得权衡场景,必要时为不同语言分别配 - 别试图用正则或插件绕过这个机制,底层 Scintilla 渲染引擎只认这个字段
word characters不点确定、不切语言、不重启,等于没改。











