lsp插件本身不提供任何功能,必须正确启动语言服务器、识别文件scope与syntax、配置绝对路径command并重启服务,三者缺一不可;右下角无lsp标识、无补全跳转即表明任一环节失败。

装了 LSP 插件不等于有补全、跳转或悬停,真正起作用的是语言服务器是否被 Sublime 正确启动、识别并绑定到当前文件——三者缺一,功能就静默失效。
右下角没显示 LSP: pyright 或 LSP: typescript?先查 scope 和语法识别
Sublime 不靠文件后缀判断语言,只认当前文件的 scope 和 syntax。如果右下角显示 Plain Text 或 Python 3,LSP 根本不会发任何请求。
- 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS),看状态栏是否输出source.python、source.ts或source.svelte;若为text.plain,说明语法未生效 -
syntaxes必须填 Sublime 4+ 原生路径:Packages/Python/Python.sublime-syntax,不是旧版.tmLanguage - 第三方插件(如 Anaconda、TypeScriptSyntax)可能覆盖原生语法,临时禁用再验证
- 打开一个
.py文件后,手动执行View → Syntax → Open all with current extension as... → Python强制绑定
command 字段填错,LSP 就是哑巴
配置里 "command": ["pyright", "--stdio"] 看似正确,实则极易失败:它依赖系统 PATH,而 Windows/macOS 的终端 PATH 和 Sublime 的 PATH 常不一致。
- 在终端运行
which pyright(macOS/Linux)或where pyright(Windows),拿到绝对路径,例如/Users/me/.npm-global/bin/pyright - 填进配置时必须用正斜杠或双反斜杠:
["/Users/me/.npm-global/bin/pyright", "--stdio"],单反斜杠C:\...会被解析为转义字符 - 不要用
pip install pyright—— 它装的是 Python 包,不是可执行 CLI;必须用npm install -g pyright - 改完配置后,必须执行
LSP: Restart Servers,重启窗口无效
Svelte 项目死活不识别 $lib 或 $derived?缺的不是插件,是 svelte.config.js 和 tsconfig.json
svelte-language-server 启动后立刻退出,90% 是因为项目根目录没有 svelte.config.js;即使空文件也得存在。类型符号不识别,则是 tsconfig.json 没配对。
- 项目根目录必须有
svelte.config.js,内容可极简:module.exports = {}; -
tsconfig.json中compilerOptions.types必须包含"svelte",否则$derived被标为未定义 -
compilerOptions.baseUrl设为".",且paths显式声明:"$lib/*": ["src/lib/*"] -
<script setup lang="ts"></script>块里,类型必须显式写出,例如export let name: string;;只写export let name;会导致 LSP 跳过推导 - 改完
tsconfig.json后,必须再次执行LSP: Restart Servers—— LSP 不监听配置变更
补全弹窗出来但 Tab 不确认?不是插件问题,是 Sublime 默认关掉了
很多人看到补全框,按 Tab 却只插入缩进,以为 LSP 失效。其实是 Sublime 默认禁用该行为,需手动开启。
- 打开
Preferences → Settings(右侧用户设置),确保含以下三项: "auto_complete": true-
"auto_complete_commit_on_tab": true(最关键,缺它就等于没开补全) -
"auto_complete_with_fields": true(支持模板占位符跳转) - 检查是否被
AutoFileName或All Autocomplete劫持了Tab行为,临时禁用测试 -
auto_complete_triggers需显式声明,例如:[{"selector":"source.python","characters":"."}];selector必须是source.python,不是text.python
最常被忽略的不是配置项本身,而是 Sublime 的作用域机制和语言服务器的冷启动逻辑——scope 错了,LSP 根本不说话;svelte.config.js 缺了,server 直接退出;tsconfig.json 改了却不重启会话,所有变更都白费。











