Sublime Text 本身不调试 Lua,“调试卡顿”实为构建运行慢、LSP 延迟或插件干扰所致;需区分“运行慢”(查工作路径、stdin、中文路径、lua.exe 启动阻塞)与“编辑卡”(关冗余 LSP 扫描、禁用冲突插件、清缓存重启)。

Sublime Text 本身不调试 Lua,所谓“调试卡顿”基本是构建运行慢、LSP 响应延迟或插件干扰导致的假象——真正在意性能,得先分清是“运行慢”还是“编辑卡”,二者根源完全不同。
Ctrl+B 运行脚本卡住几秒才出结果?查构建系统工作路径和 stdin
这不是 Sublime 卡,是 lua.exe 启动时卡在读取标准输入或解析路径上。
- Windows 下常见于中文路径:lua.exe(尤其 5.4+)只接受 UTF-8 编码路径,而 Sublime 传入的 `$file` 路径若含中文且系统 locale 是 GBK,就会阻塞或报
cannot open xxx: No such file or directory;最稳解法是把 `.lua` 文件全移到纯英文路径下(如C:/dev/test.lua) - 别用
"shell_cmd": "lua $file"—— Sublime 不支持 shell 语法,&&或管道会直接挂起;改用"working_dir": "$file_path"显式指定目录,避免 lua 因找不到相对路径下的依赖模块而反复扫描 - 如果脚本里用了
io.read()或os.execute("pause"),构建系统默认不提供交互式 stdin,会一直等待输入直到超时;删掉或改用arg传参替代
LuaEnhanced + LSP 补全/跳转变慢?关掉没用的 workspace.library
Lua-language-server(LSP 后端)启动时会递归扫描 workspace.library 列出的所有路径,路径越多、嵌套越深,首次补全延迟越明显。
- 检查项目根目录下的
luaconfig.json,删掉没实际引用的路径,比如注释掉/usr/local/share/lua/5.4这类全局路径,只保留 OpenResty 开发真正需要的/usr/local/openresty/lualib - 确认
runtime.path指向的是真实安装路径(执行openresty -V | grep prefix获取),别用软链接或挂载路径,LSP 对符号链接扫描效率极低 - 在 Sublime 的 LSP 设置里加
"initializationOptions": {"maxWorkspaceSize": 100},限制扫描文件总数,防止单个项目拖垮整个 LSP 进程
保存后自动 lint(luacheck)卡界面?换异步触发+跳过大文件
Sublime 默认用同步方式调用 luacheck,遇到大文件或复杂规则集时会锁死 UI 线程。
- 别用
SublimeLinter-luacheck的默认配置;进其设置(Preferences → Package Settings → SublimeLinter → Settings),把"lint_mode"改成"background",并设"delay"为1.0秒以上,避免每敲一个字都扫一遍 - 在项目根目录加
.luacheckrc,用exclude_files = {"large_util.lua", "vendor/.*"}主动跳过生成代码或第三方模块 - 如果只是写 OpenResty 脚本,根本不需要全量 lint —— 把
luacheck替成lua -p(语法检查)更轻量,构建系统里加个"cmd": ["lua", "-p", "$file"]就够用
为什么改了配置重启 Sublime 还是慢?环境变量和插件加载顺序才是关键
Sublime 启动时只读一次 PATH 和插件注册表,很多“优化”失败是因为没清干净缓存或加载了冲突插件。
- 改完系统 PATH 后,必须彻底关闭所有 Sublime 进程(任务管理器里杀掉
subl.exe或Sublime Text进程),再重新打开;否则它还在用旧环境变量找lua或lua-language-server - 禁用所有非必要插件(尤其是名字带 “auto”、“smart”、“realtime” 的),用
Ctrl+Shift+P输入Package Control: Disable Package逐个关,观察是否恢复流畅 - LuaEnhanced 和原生 Lua 包不能共存:如果右下角显示的是
Lua而不是LuaEnhanced,说明插件没生效,构建系统里的"selector": "source.lua.enhanced"就会失效,导致 Ctrl+B 完全无响应
真正影响速度的从来不是 Sublime 本身,而是你让 lua.exe 去读什么、让 LSP 扫什么、让 linter 查什么——删掉一行没用的 workspace.library,可能比调优 JSON 缩进快十倍。











