你现在的思路非常正确!为了完全实现你的需求(即:遇到下划线 _ 截断,遇到短横线 - 不截断),你不仅需要添加下划线 _,还需要删除短横线 -。
在 VS Code 的默认设置中,短横线 - 是包含在分隔符里的,所以双击 explore-search 时,默认只会选中 explore 或 search。
最终解决步骤:
- 打开 VS Code 设置 (搜索
editor.wordSeparators)。 - 将输入框里的内容替换为下面这串字符(注意:里面有
_,但没有-):
`~!@#$%^&*()_=+[{]}\|;:'",.<>/?
为什么这样设置就能完美解决你的BEM需求?
- 包含
_:当你双击explore-search__placeholder的placeholder部分时,VS Code 认为_是墙壁,所以只会选中placeholder。 - 去掉
-:当你双击explore-search时,VS Code 认为-也是普通字母的一部分(不是墙壁),所以会把explore-search作为一个整体全部选中。
💡 进阶建议:只针对前端文件生效(推荐)
如果你写 JavaScript、Python 等语言,变量名经常是 user_id 这种蛇形命名。如果你在全局把 _ 设置成了分隔符,双击 user_id 就会只能选中 user 或 id,这非常不方便。
推荐做法是:只让这个规则在 HTML、CSS、SCSS、Vue 或 React 文件中生效。
你可以打开 settings.json (点击设置右上角的文件图标),将以下代码粘贴进去:
// 全局保持默认(不影响 JS/TS 等代码的双击选中)
"editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",
// 针对 CSS/SCSS 修改,适配 BEM
"[css]": {
"editor.wordSeparators": "`~!@#$%^&*()_=+[{]}\\|;:'\",.<>/?"
},
"[scss]": {
"editor.wordSeparators": "`~!@#$%^&*()_=+[{]}\\|;:'\",.<>/?"
},
"[html]": {
"editor.wordSeparators": "`~!@#$%^&*()_=+[{]}\\|;:'\",.<>/?"
},
"[vue]": {
"editor.wordSeparators": "`~!@#$%^&*()_=+[{]}\\|;:'\",.<>/?"
}
这样你就能在写样式时完美使用 BEM 的双击选中,同时又不会破坏写逻辑代码时的体验!