lsp跳转/补全卡住不是sublime问题,而是语言服务器冷启动与同步阻塞所致:pyright首次扫描venv或tsserver fallback全局node_modules,需配置pyrightconfig.json限制范围、禁用stub优先、指定绝对路径及tsdk,并彻底杀掉plugin_host进程清缓存。

为什么LSP跳转/补全卡住不是Sublime的问题
你看到LSP: request sent但没response,说明Sublime已发请求,卡点在语言服务器本身——比如pyright正扫描整个venv,或tsserver fallback 到全局node_modules找tsconfig.json。这不是UI渲染慢,是后端同步阻塞。常见现象:首次goto_definition卡3秒以上、跨文件跳转比同文件慢2–5倍、状态栏长时间显示“LSP: initializing…”。
Pyright冷启动慢必须砍掉扫描范围
pyright默认“宽松模式”会激进扫描,哪怕项目根目录下没有配置文件。关键动作不是调auto_complete_delay,而是强制它只看该看的路径:
- 项目根必须有
pyrightconfig.json(空文件也行),否则它不读include/exclude -
pyrightconfig.json里明确写:{"include": ["src", "app"], "exclude": ["tests", "migrations", "node_modules"]} - 禁用stub优先:
{"useLibraryCodeForTypes": false},避免跳进site-packages/requests/py.typed -
command字段必须用绝对路径指向venv里的二进制,例如:["/home/user/project/.venv/bin/pyright", "--stdio"],不能只写["pyright", "--stdio"]
tsserver找不到tsconfig.json就扫全局node_modules
TS/JS项目里LSP卡顿,90%是因为typescript-language-server没加载到项目上下文。它不会自动向上查找tsconfig.json,而是直接fallback到node_modules扫描。解决方案必须带initializationOptions:
-
command中必须包含initializationOptions,且typescript.tsdk要设为相对路径:{"typescript.tsdk": "./node_modules/typescript"} - 确保
node_modules/typescript存在;若用pnpm,需软链或改用typescript/lib/tsserver.js - 删掉项目外全局安装的
typescript和typescript-language-server,不同版本混用会导致server启动失败或缓存错乱
别信“关插件就能好”,得杀干净plugin_host进程
LSP类插件(如sublime-lsp+pylsp)不是开一个窗口起一个server,而是复用plugin_host进程。多开窗口后内存叠涨、goroutine泄漏,仅禁用插件或重载设置无效:
- 必须彻底退出Sublime:Windows查任务管理器确认
sublime_text.exe和plugin_host.exe都消失;macOS用活动监视器确认Sublime Text和plugin_host进程全无 - 删
Cache和Index前先确认进程死了,否则删了也立刻重建——尤其Windows用户常漏掉%LOCALAPPDATA%\Sublime Text\Cache - 清完重启时,用
subl --safe-mode验证:如果安全模式下不卡,问题100%出在LSP配置或残留缓存上











