sublimecodeintel仅适合简单项目,真需函数签名、参数类型等深度提示,必须用lsp+typescript-language-server;前者不解析node_modules和tsconfig.json,后者依赖正确配置才能启用。

SublimeCodeIntel 能用,但只适合简单项目;真要稳定提示函数签名、参数类型、模块导出,必须上 LSP + typescript-language-server。别被“JS提示”四个字骗了——默认语法高亮和词频补全不是智能提示。
装哪个插件才真正管用
两种路径,效果差距很大:
-
SublimeCodeIntel:纯本地分析,不依赖外部服务,装完重启就能提示变量、函数名,但对import后的模块内容、Promise.then()的链式返回类型、TS 类型推导基本无能为力 -
LSP(配合typescript-language-server):走标准语言服务器协议,能理解node_modules、tsconfig.json、JSDoc 注释,提示含参数名、类型、文档,但必须手动配好路径和启动条件
如果你写的是纯 .js 文件且没用 JSDoc 或 @types,SublimeCodeIntel 够用;但只要涉及 Node.js 内置模块、npm 包、ESM 导入或未来可能加 TS,LSP 是唯一靠谱选择。
LSP 配置失败的三个硬性卡点
装了 LSP 和 LSP-typescript 却没提示?大概率卡在这三处:
-
typescript-language-server没全局安装:终端执行npm install -g typescript-language-server(Node ≥ 16),不能只装typescript - 项目根目录缺
tsconfig.json:哪怕空文件也要有,内容可为{"compilerOptions": {}};没有它,服务器启动后立刻退出,LSP 日志里会显示no tsconfig.json found -
LSP设置里没启用typescript客户端:打开Preferences → Package Settings → LSP → Settings,确认"clients"下有"typescript"块,且"enabled"为true
SublimeCodeIntel 的实际限制与绕过方式
它不读 node_modules,也不解析 package.json 的 exports 字段,所以遇到以下情况必然失效:
用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...
-
import { debounce } from 'lodash'→ 点不出debounce参数 -
const fs = require('fs')→fs.后没方法列表 - 使用
export default class的模块 → 导入后无法跳转定义
临时缓解办法:在 JS 文件顶部加 JSDoc,比如 /** @type {import('axios').AxiosInstance} */ let api;,SublimeCodeIntel 能据此补全部分方法,但终究是补丁,不是解法。
别让 Emmet 干扰 JS 补全
Emmet 默认监听 . 和 : 键,在 JS 里输 div. 或 color: 会被截胡,导致 SublimeCodeIntel 或 LSP 的提示弹不出来。
解决方式:打开 Preferences → Package Settings → Emmet → Settings,把 "disable_tab_abbreviations_on_snippets" 设为 true,再加一条:
"disabled_scopes": ["source.js", "source.jsx", "source.ts", "source.tsx"]
这样 Emmet 就彻底退出 JS/TS 文件,补全逻辑才能交还给真正的语言插件。
真正麻烦的从来不是装插件,而是确认语言服务器进程是否跑起来了、配置文件是否被读到、作用域是否匹配。看到 Ctrl+Space 没反应,先开 Ctrl+` 看控制台有没有 LSP 连接失败的日志,比反复重装插件有用得多。










