PowerShell 7 的 LSP 服务必须用 pwsh.exe 启动,不能硬写 powershell.exe;需确认真实路径、配置绝对路径、安装 PowerShellEditorServices 模块、绑定 source.powershell 作用域,并注意中文路径和编码问题。

PowerShell 7 的 LSP 服务必须用 pwsh.exe 启动,不能硬写 powershell.exe
Sublime Text 本身不提供 PowerShell 语言服务器(LSP),得靠第三方插件(如 lsp-powershell)调用系统里的 pwsh.exe。如果你装的是 PowerShell 7+(即 pwsh.exe),但 LSP 配置里还写 powershell.exe,就会报 The system cannot find the file specified。
实操建议:
- 先在终端运行
where pwsh或Get-Command pwsh,确认真实路径,常见为C:\Program Files\PowerShell\7\pwsh.exe或C:\Users\<font color="#000000">xxx</font>\Documents\PowerShell\7\pwsh.exe - 在 LSP 插件的设置中(通常是
LSP-powershell.sublime-settings),把"command"字段设为绝对路径:["C:/Program Files/PowerShell/7/pwsh.exe", "-NoProfile", "-ExecutionPolicy", "Bypass"] - 别依赖 PATH 查找——Windows 下 PATH 可能没包含 pwsh 目录,尤其非管理员安装时
- 如果同时装了 Windows PowerShell 5.1 和 PowerShell 7,
powershell.exe指向旧版,pwsh.exe才是新版,二者不兼容
lsp-powershell 插件必须手动安装,且需匹配 PowerShell 7 的模块路径
Sublime Text 官方 Package Control 里没有官方 PowerShell LSP 插件,lsp-powershell 是社区维护的独立包,不随 LSP 主插件自动启用。
实操建议:
- 按
Ctrl+Shift+P→Package Control: Install Package→ 搜索并安装lsp-powershell(作者:tcnksm) - 安装后,必须重启 Sublime Text,否则 LSP 客户端不会识别新插件
- PowerShell 7 默认模块路径和 Windows PowerShell 不同,LSP 启动时会尝试加载
PowerShellEditorServices模块;该模块需通过pwsh手动安装:pwsh -c "Install-Module PowerShellEditorServices -Scope CurrentUser -Force" - 若模块装在
$HOME\Documents\PowerShell\Modules,而 LSP 配置没指定-ModulePath,可能找不到服务——此时要在 LSP 设置里加参数:"-ModulePath", "$HOME/Documents/PowerShell/Modules"
语法高亮、构建系统和 LSP 三者必须全部绑定到 source.powershell
Sublime 不靠文件扩展名触发 LSP,而是看当前视图的语法作用域(syntax scope)。哪怕你打开的是 .ps1 文件,右下角显示 “Plain Text” 或 “ShellScript”,LSP 就完全不启动。
实操建议:
- 先确保已安装
PowerShell插件(jbrooksuk 版),否则.ps1文件默认无高亮,也无source.powershell作用域 - 打开任意
.ps1文件 → 点右下角语言名 → 选PowerShell;或按Ctrl+Shift+P→Set Syntax: PowerShell - 检查是否生效:按
Ctrl+Alt+Shift+P,状态栏应显示source.powershell;如果不是,LSP 和 Build System 都不会响应 -
LSP-powershell的"selector"默认就是"source.powershell",所以必须和构建系统(PowerShell.sublime-build)保持一致,否则 Ctrl+B 能跑,但跳转、补全、诊断全失效
中文路径、空格和编码问题在 LSP 场景下更隐蔽
LSP 启动失败时通常静默退出,不像构建系统那样直接报错。常见表现是:无代码补全、无悬停提示、Goto Definition 失效,但控制台里看不到明显错误。
实操建议:
- 路径含中文或空格时,
pwsh.exe启动参数必须用双引号包裹,且 JSON 中要转义:"\"C:/Program Files/PowerShell/7/pwsh.exe\"" - LSP 默认使用 UTF-8,但 PowerShell 7 在某些区域设置下输出仍可能用 UTF-16 LE;若日志中出现乱码或解析失败,在 LSP 设置里显式加
"encoding": "utf-8" - 不要复用构建系统的
-ExecutionPolicy Bypass到 LSP 启动命令里——LSP 不执行脚本,只加载模块,加了反而可能干扰模块初始化 - 调试方法:在 LSP 设置中开启
"log_stderr": true,然后查看 Sublime 控制台(Ctrl+`)里是否有stderr输出,重点找Import-Module : The specified module 'PowerShellEditorServices'类错误


















