<p>关键在修改 word_separators 配置,移除 - 和 .,使 user-name、obj.method 被识别为完整单词;需同时配置全局及语法特定设置,避免被语法包或插件覆盖。</p>

双击选中 user-name 或 obj.method 的关键在哪?
不是 Sublime “不支持”,而是它默认把 - 和 . 当作单词边界——这由 word_separators 控制,改对这个配置,双击立刻变聪明。
- 打开 Preferences → Settings – User,在右侧 JSON 中添加或修改:
"word_separators": "/\()\"'-:,.;~!@#$%^&*|+=[]{}`~?"(注意:已去掉-和.) - 保存即生效,无需重启;但改得太宽(比如删掉
/),https://也会被当一个词,写 URL 时反而反人类 - 别直接复制 Default 设置再删——不同版本默认值略有差异,建议以当前 Settings – Default 中实际内容为准,只删
-和.
为什么改了 word_separators 在 .ts 或 .json 文件里还是不生效?
语法包(syntax package)会覆盖全局设置,尤其是 TypeScript、JSON、Vue 等语言定义自带的 word_separators 规则,优先级高于用户设置。
- 右下角看当前语法(如显示
TypeScript),临时切到Plain Text测试:若双击恢复正常,基本锁定是语法包干扰 - 右键文件 → Settings – Syntax Specific,单独为该语言加配置,例如:
{"word_separators": "/\()\"'-:,.;~!@#$%^&*|+=[]{}`~?"} - 不推荐用 PackageResourceViewer 去硬改语法包源码——升级后会被覆盖,且容易破坏解析逻辑
Ctrl+D 选不到 user-name?不是功能失效,是匹配逻辑卡住了
Ctrl+D 默认按“完整单词”匹配,而 user-name 在未改 word_separators 时,根本不算一个词——它被拆成两个 token,Ctrl+D 找不到连续的相同字符串。
- 先确保
word_separators已删-,否则Ctrl+D永远只在user和name之间跳 - 光标必须落在
user-name内部(不能停在前面空格或后面标点),否则第一次Ctrl+D会选中空格或连字符本身 - 想跳过某些匹配项(比如日志里的
error),别用Alt+F3全选,老实用Ctrl+D逐个确认添加更安全
改完发现光标跳转、快捷键行为也变了,这是正常的
word_separators 不只影响双击,还控制 Ctrl+←/→(跳词)、Ctrl+Shift+←/→(扩选)、甚至部分插件的语义分析范围。改了就得接受整套单词操作逻辑同步变化。
-
Ctrl+→原本停在user和-之间,现在会一口气跳过user-name整体——这是预期行为,不是 bug - 如果项目里大量使用
kebab-case(如 CSS class 名),这个改动利远大于弊;但若常处理域名、URL、路径,建议保留.或仅对特定语法启用 - 真正容易被忽略的是:某些团队共享的 EditorConfig 或 LSP 插件会悄悄重置单词边界逻辑,遇到诡异现象,先关插件排查










