跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Sublime如何设置双击选中单词包含连字符?(自定义词界)

Sublime Text 修改单词边界需调整 word_separators 设置,删去其中的“-”可使 user-name 被整体选中;须在 Preferences → Settings – User 中修改,避免改动默认设置或误删其他分隔符(如 .),并注意语法专属设置优先级更高。 Sublime Text 怎么改单词边界? 默认双击选中单词时,
-
(连字符)、
_
、
.
等符号都会被当作分隔符,所以
user-name
会拆成
user
和
name
两段。这不是 bug,是 Sublime 按 ASCII 字符分类预设的「词界」行为,得手动改配置。 关键在
word_separators
设置项——它定义哪些字符 *不参与* 单词构成。删掉其中的
-
,双击就能跨连字符选中整个
user-name
。 修改位置:菜单 Preferences → Settings – User ,在右侧 JSON 中添加或覆盖
"word_separators"
不要直接改默认设置(Settings – Default),那会被升级覆盖 值必须是字符串,每个要排除的符号单独写,不能用正则或范围表示法 原始默认值长这样:
".,;:!?()[]{}"'`-\|/\_~@#$%^&*+="
,注意反斜杠要转义 怎么安全删掉连字符但保留其他分隔符? 别全删
word_separators
,否则
foo.bar(baz)
也会被当一个“词”选中,失去语义区分。只剔除明确需要粘连的符号更稳妥。 比如只想让连字符不打断单词,就从默认字符串里去掉
-
,其他照旧:
{ "word_separators": "./\()"'-:,.;!?[]{}|_~@#$%^&*+=<>`" }
注意这里
-
被移走了,且因它在字符串中间,不用额外转义;如果放开头或结尾才需加反斜杠。 仿Sublime和notepad++编辑器效果 仿Sublime和notepad++编辑器效果 下载 改完保存,无需重启,双击立刻生效 如果误删太多(比如把
.
也去掉了),会导致类名、属性访问出问题,比如
obj.method
变成一整块 不同语言插件可能覆盖该设置(如某些 JavaScript 插件会重设),优先检查是否被插件干扰 为什么改了没反应?常见失效场景 最常踩的坑不是配置错,而是作用域没对上。Sublime 的设置有层级:全局、语法专属、项目专属。双击行为走的是当前视图的语法模式设置。 确认当前文件右下角显示的语法(如 Plain Text 或 JavaScript ),再打开对应语法的设置:菜单 Preferences → Settings – Syntax Specific 如果用了
Project.sublime-project
,项目级设置会覆盖用户级,检查其中是否有
settings
块重复定义了
word_separators
部分插件(如
BracketHighlighter
或旧版
Emmet
)会劫持鼠标事件,临时禁用插件验证是否冲突 macOS 上如果启用了「使用系统光标行为」,也可能影响双击逻辑,可尝试关闭对比 连字符之外还想粘连其他符号? 比如处理 CSS 类名
bg-red-500
或 Python 的
__dunder__
,可以继续从
word_separators
里移除对应字符: 想让下划线也粘连:删掉
_
(但注意这会让
snake_case
变成一整块,Python 用户慎用) 想让点号粘连(如
foo.bar.baz
):删掉
.
,但会丧失对对象链的基本识别能力 想只对特定语法生效(如只在 CSS 文件里粘连
-
):用 Settings – Syntax Specific ,并确保文件关联正确(.css 文件不能被识别为 Plain Text) 真正难的不是加几个字符,而是判断哪些符号在什么上下文里该“粘”,哪些该“断”。比如
HTTPServer
里的大驼峰和
http-server
里的短横线,语义完全不同——Sublime 没法自动区分,只能靠你按实际编辑场景权衡。

相关文章