Sublime Text 的 Svelte 语义功能依赖 svelte-language-server,而非插件本身;90% 的无补全、无跳转问题源于服务器未启动,关键需安装 LSP 和 LSP-svelte、配置 svelte.config.js 和 tsconfig.json、全局安装 svelte-language-server 并手动启用服务。

Sublime Text 本身不提供 Svelte 语义级提示,LSP-svelte 插件只是桥接层,真正起作用的是 svelte-language-server 进程——装了插件但没补全、没跳转、on:click 不提示,90% 是语言服务器根本没跑起来。
确认 LSP 和 LSP-svelte 已正确安装
必须用 Package Control 安装两个包:LSP(作者 sublimelsp)和 LSP-svelte。注意:svelte-language-server 不是 Sublime 插件,不能通过 Package Control 装;装错成同名的独立包会导致冲突。
-
LSP是底层协议实现,没它LSP-svelte就是摆设 -
LSP-svelte提供 Svelte 专属配置模板,但不会自动启用服务 - 检查方式:菜单栏 Preferences → Package Settings → LSP → Settings,确认
"clients"下有"svelte"配置块(哪怕内容为空)
确保 svelte-language-server 全局可用
svelte-language-server 必须作为可执行命令存在于系统 PATH 中,否则 LSP 插件启动时会静默失败。
- 终端运行
npm install -g svelte-language-server(要求 Node.js ≥ 16) - 验证是否生效:
svelte-language-server --version应输出版本号 - 如果用 pnpm 或 yarn,别用
-g,改用npx svelte-language-server并在 LSP 设置里显式指定"command"路径
svelte.config.js 是硬性开关,空文件也得有
svelte-language-server 启动后第一件事就是找项目根目录下的 svelte.config.js。找不到就直接退出,不会报错,也不会提示你缺这个文件。
- 新建
svelte.config.js,内容只需一行:module.exports = {}; - 必须放在你打开的 .svelte 文件所在项目的最外层目录(即
package.json所在位置) - 如果项目是 SvelteKit,已有该文件,但请确认它导出的是对象,不是
export default(CommonJS 语法优先)
tsconfig.json 类型配置决定 $derived / $$Props 是否识别
即使服务器跑起来了,$derived、$$Props、$lib 路径等仍可能标红或无提示——这是 TypeScript 类型系统没被正确接入。
-
compilerOptions.types必须包含"svelte",否则全局类型不可见 -
compilerOptions.baseUrl设为".",且paths中声明"$lib/*": ["src/lib/*"] - 改完
tsconfig.json后,必须手动执行LSP: Restart Servers(仅重启窗口无效) - 若用
<script setup lang="ts">,建议显式写export let name: string,避免 LSP 因推断失败跳过整块
最容易被忽略的一点:LSP 启动成功 ≠ 语义功能完整。从 svelte.config.js 缺失到 tsconfig.json 的 types 漏配,每一步都可能让补全“看起来正常”却漏掉关键符号。调试时优先检查控制台日志(View → Show Console),搜索 svelte 或 error,比反复重启更有效。


















