编写PowerShell代码时VSCode不遵守editor.wordSeparators设置问题
问题核心原因
VSCode 1.80及以上版本引入了两项调整,导致全局editor.wordSeparators配置不再生效:
- 语言级专属配置优先级高于全局配置:官方维护的语言扩展(比如PowerShell、PHP等)会默认给对应语言单独设置
editor.wordSeparators值,你修改的全局配置会被语言级配置直接覆盖。 - 新增智能单词选择特性:默认开启的
editor.wordSelectionSmartSelect功能优先级高于单词分隔符配置,会根据编程语言的语法语义规则判断单词边界,不会严格按照你配置的分隔符拆分选择。
修复方案
1. 配置对应语言的专属分隔符规则
不要只改全局的editor.wordSeparators,在settings.json中为你需要的语言单独设置分隔符,以PowerShell为例:
"[powershell]": { "editor.wordSeparators": "`~!@#%^&*()-=+[{]}\\|;:'\",.<>/?" }
如果是PHP等其他需要保留$作为变量前缀的语言,参照上述格式添加对应语言的配置块即可。
2. 关闭智能单词选择功能
如果需要严格按照你配置的分隔符规则选中内容,关闭智能单词选择即可,可选择全局关闭或者仅针对指定语言关闭:
// 全局关闭智能单词选择 "editor.wordSelectionSmartSelect": false, // 仅针对PowerShell关闭,不影响其他语言 "[powershell]": { "editor.wordSelectionSmartSelect": false, "editor.wordSeparators": "`~!@#%^&*()-=+[{]}\\|;:'\",.<>/?" }
关闭该功能后,连字符的选择规则也会恢复正常:双击two-part时仅会选中当前分隔符区间的内容,不会选中整个字符串。
3. 排查第三方扩展冲突
如果按上述配置后仍然不生效,可临时禁用所有第三方扩展后重启VSCode验证,部分代码格式化、语言增强类扩展会强制修改编辑器的单词选择规则,排查到对应扩展后关闭其相关配置即可。
内容的提问来源于stack exchange,提问作者geoced
相关产品推荐
相关产品推荐

