必须先确认package control已安装并能调出install package命令,再安装lsp和lsp-typescript插件;lsp-typescript专为ts封装,需手动配置绝对路径指向tsserver(windows须含.cmd后缀),并确保文件scope为source.ts、syntax正确、tsconfig.json存在,最后通过lsp日志排错。

确认 Package Control 和 LSP 插件已就位
没装 Package Control,后面所有步骤都白搭。按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Package Control: Install Package 能弹出列表才算成功。如果提示 “command not found”,得先粘贴官方安装脚本到控制台(View → Show Console)并执行,之后必须重启 Sublime Text。
接着用同一命令面板安装两个插件:LSP(作者 sublimelsp)和 LSP-typescript。别只装 LSP —— 它只是通用客户端,不带 TypeScript 服务逻辑;LSP-typescript 才是专为 TS 封装的客户端,含自动路径探测和默认参数。
- 装完不重启,右下角状态栏不会出现
LSP: typescript - 别手动去 GitHub 下载
typescript-language-server:它和tsserver不兼容,LSP-typescript 只认官方tsserver - 禁用 Anaconda、SublimeCodeIntel 等旧补全插件,它们会劫持
source.tsscope,导致 LSP 根本不启动
让 LSP-typescript 找到有效的 tsserver
90% 的“没跳转”“悬停空白”问题,根源是 LSP-typescript 没执行到真正的 tsserver 进程。它不自带服务,只负责调用——你本地有没有、路径对不对、权限够不够,全得自己兜底。
在终端运行:npx tsc --version 看是否输出版本号。若报错,说明项目没装 typescript 或全局没装。推荐优先在项目根目录执行:npm install typescript --save-dev,这样 tsserver 会落在 node_modules/.bin/tsserver。
- macOS/Linux:用
which tsserver或npx tsc --noEmit && ls node_modules/.bin/tsserver*确认路径 - Windows:用
where tsserver,注意结果带.cmd后缀,配置里必须写全,比如"C:\Users\xxx\AppData\Roaming\npm\tsserver.cmd" - 打开
Preferences → Package Settings → LSP → Servers → LSP-typescript,编辑用户设置,填入绝对路径:"command": ["/path/to/tsserver"](macOS/Linux)或"command": ["C:\path\to\tsserver.cmd"](Windows) - 删掉
initializationOptions字段——新版tsserver已废弃该字段,留着会导致连接直接断开
验证语法识别与作用域是否匹配
Sublime 不看文件后缀,只认当前文件的 syntax 和 scope。哪怕你打开了 index.ts,如果右下角显示的是 Plain Text 或 JavaScript,LSP-typescript 就不会响应。
按 Ctrl+Alt+Shift+P(Win/Linux)或 Cmd+Alt+Shift+P(macOS)看状态栏,正确应显示 source.ts 或 source.tsx。如果不是:
- 点击右下角语法名 → 手动选
JavaScript → TypeScript(Sublime Text 4 内置支持,无需额外插件) - 检查是否被其他插件覆盖了语法定义,比如
TypeScriptSyntax插件可能注册了冲突的scope,临时禁用再试 - 确保
LSP-typescript配置中"scopes"是["source.ts", "source.tsx"],"syntaxes"是["Packages/JavaScript/TypeScript.sublime-syntax"](不是旧版.tmLanguage) - 打开项目根目录(而非单个 .ts 文件):LSP 需要读取
tsconfig.json,否则类型推导退化为 any
查日志比重启更有效
功能没反应时,别急着重启。打开 Preferences → Package Settings → LSP → Toggle Log Panel,日志里会明确告诉你卡在哪一步:
-
Failed to start server: spawn ENOENT→command路径错或没执行权限 -
server stderr: Cannot find module 'typescript'→tsserver启动时找不到 TS 运行时,需确认node_modules/typescript存在且路径在tsdk配置里显式声明 -
LSP-typescript initializing…卡住超 5 秒 → 大概率是tsconfig.json有语法错误,或include路径指向了不存在的目录 - 悬停提示一闪而过 → 检查
LSP.sublime-settings中"hover_delay_ms"是否小于 300,以及"show_symbol_info_tooltip"是否为true
最常被忽略的其实是作用域污染——某个插件悄悄把 .ts 文件的 scope 改成了 source.js,LSP 客户端压根收不到通知,连日志都不会打。











