浮动预览窗口打不开需检查show_definitions是否启用、语法识别是否正确、语言服务器是否运行;st3默认false需手动开启,st4默认true;悬停依赖语法高亮和lsp支持,命令名为peep_definition而非peek;乱码可配置minihtml_font_face。

浮动预览窗口打不开?检查 show_definitions 是否启用
Sublime Text 默认不开启悬停定义预览,不是 bug,是配置项没开。很多人装完插件或升级后发现 Ctrl+Click 或鼠标悬停没反应,第一反应是插件坏了,其实只是开关关着。
-
Preferences → Settings – User里确认有这一行:"show_definitions": true - 如果用的是 Sublime Text 4,这个选项默认为
true;ST3 默认是false,必须手动加 - 改完保存,不用重启,但已打开的文件可能需要重新聚焦(比如切个标签再切回来)才生效
- 注意别写成
"show_definition"(少个 s),拼错就完全无效
悬停没定义?语言服务器或语法高亮没配对
浮动预览依赖两个基础:当前文件被识别为正确语法(如 Python),且该语言有定义解析能力。纯文本或未配置 LSP 的语言,悬停只会显示空框或报错。
- 右下角看当前语法是否准确,比如 Python 文件显示的是
Plain Text,那肯定没定义——点它手动选Python - 原生 Sublime 不带语言服务器,
show_definitions只能解析简单符号(如当前文件里的def func()),跨文件、标准库、第三方包全靠插件(如LSP+LSP-pyright) - 装了 LSP 插件后,要确认服务已启动:状态栏左下角出现
pyright: ready类提示,否则悬停只返回“no definition found” - 常见错误现象:
No definition found—— 八成是语法不对、LSP 没运行,或光标落在字符串/注释里
Ctrl+Shift+P 调不出“Peek Definition”?快捷键被覆盖或命令名变了
Sublime 的“跳转到定义”和“浮动预览”是两套机制:一个是弹窗式(Peek Definition),一个是悬停式(show_definitions)。很多人想用快捷键触发浮动窗,但实际命令名是 pep8 那种旧命名,容易混淆。
- 正确命令名是
peep_definition(注意是 peep,不是 peek)——这是 Sublime 原生命令,不依赖插件 - 绑定快捷键示例(加到
Preferences → Key Bindings – User):[{"keys": ["ctrl+alt+space"], "command": "peep_definition"}] - 如果装了 LSP,它会注册自己的
lsp_symbol_definition,优先级更高,但默认不绑定快捷键,得自己配 - 冲突排查:按
Ctrl+Shift+P输入peep,看有没有候选;没有就说明命令根本没加载(可能是插件禁用或损坏)
预览窗口内容乱码、截断或延迟?和字体/缩放/渲染有关
浮动预览本质是 Sublime 的 minihtml 渲染器,对字体、行高、字符集敏感。尤其在 Windows 上用中文路径或非 UTF-8 编码的源码时,常出现方块、换行错位、卡顿。
- 预览窗口不继承编辑区字体设置,它用系统默认等宽字体;若系统缺少
Consolas或Menlo,会 fallback 到不支持中文的字体,导致乱码 - 解决方法:在
Preferences → Settings – User加这行:"minihtml_font_face": "Monaco"(macOS)或"Consolas"(Windows),并确保字体已安装 - 大文件中频繁悬停会卡顿——这不是 bug,是 Sublime 每次都实时解析 AST,建议关掉
show_definitions改用快捷键按需触发 - 预览内容被截断?通常是行数超限(默认最多显示 20 行),无法调整,这是硬限制,别折腾 CSS











