双击选中 php 或 js 变量时漏掉 $,是因 word_separators 默认包含 $,删去即可;需在用户设置或语法专属设置中修改,改后即时生效但已开文件需重置光标。

双击选中 PHP 或 JS 变量时漏掉 $,不是 Sublime 坏了,是 word_separators 默认把 $ 当成分隔符——删掉它就正常了。
怎么让双击选中 $variable 整体
Sublime 默认把 $ 放在 word_separators 字符串里,所以双击 $user_name 只会选中 user_name,$ 被切在外面。改法很简单:
- 打开 Preferences → Settings – User(务必改右侧用户设置)
- 找到或新增
"word_separators"字段 - 把原值中单独的
$字符删掉,例如从"./\()"'-:,.;~!@#$%^&*|+=[]{}`~?"改成"./\()"'-:,.;~!#@%^&*|+=[]{}`~?" - 保存,已打开的文件重新点一下光标位置即可生效
为什么改了 word_separators 后 Ctrl+D 也变“聪明”了
这个配置影响所有基于“单词”的操作,不只是双击:
-
Ctrl+D会把$user_id、$user_name都当一个整体匹配,不再只选user -
Ctrl+F查找时,“当前单词高亮”也会包含$,比如双击选中$data后按Ctrl+F,高亮的是整个$data,不是仅data - 但正则查找
user不受影响——是 Unicode 单词边界,和word_separators无关
为什么在 .php 文件里改了还是不生效
语法专属设置(Syntax Specific)优先级高于用户全局设置。PHP 语法包可能自带 word_separators 覆盖了你的修改:
- 右下角看当前文件语法(显示为
PHP),右键文件 → Settings – Syntax Specific - 在弹出的 JSON 中添加同样字段:
"word_separators": "./\()"'-:,.;~!#@%^&*|+=[]{}`~?" - 保存后,该文件立即响应新规则;也可临时切到
Plain Text测试是否语法干扰
删 $ 之后要注意的副作用
看似只是加个符号支持,但会影响所有语言上下文:
- JS 里
$常用于 jQuery 或模板字符串(如`${x}`),删掉后双击${x}可能选中整块,而非只x - 正则表达式中
$是行尾锚点,若你在/^abc$/里双击,可能意外选中整个/^abc$/(取决于光标位置和语法高亮精度) - 如果项目混合 PHP 和纯 JS(无
$前缀),建议用Syntax Specific设置,避免全局误伤
真正容易被忽略的是:改完 word_separators 后,不同语法模式下的行为差异比想象中大——PHP 和 JavaScript 对 $ 的语义理解完全不同,别指望一套配置打遍所有文件类型。











