languages/<id>.toml 描述每种语言:哪些文件属于这种语言、怎么高亮,以及由哪个语言服务器和调试适配器提供代码智能和调试。语言服务器提供的能力(补全、导航、诊断、重构)对所有语言都通过同一套编辑器功能呈现。
语言支持的工作方式
打开文件时,IDE 按以下顺序判断它属于哪种语言:- 单个文件的 覆盖文件类型(在项目树中文件的右键菜单或编辑器标签页的右键菜单里)。
- 精确文件名(
Dockerfile、go.mod)或文件名模式。 - 扩展名,优先匹配最长的(
.html.erb先于.erb)。 - 文件第一行:例如
#!/usr/bin/env python3这样的 shebang,或<?php这类模式。 - 都不匹配时按纯文本处理。
- 高亮 即时生效:来自编辑器里的 CodeMirror 模式;语言没有对应模式时,改用内置的 tree-sitter 语法。
- 结构(大纲、折叠、项目索引中的符号)来自内置的 tree-sitter 语法,无需任何配置。
- 代码智能 来自一个或多个语言服务器(LSP)。打开文件时 IDE 启动它们,并把最近的、包含该服务器根标记(
Cargo.toml、package.json、pom.xml等)的目录作为工作区根目录。 - 调试 来自调试适配器(DAP)。
语言服务器和调试适配器会运行你机器上的程序,所以只在你信任的项目中启动。
一种语言多个服务器
一种语言可以配置多个服务器:- 备选(下表中写作
a → b):只运行第一个已安装的。例如 Python 默认用 basedpyright,只有它缺失时才退回 pyright、ty 或 pyrefly。在 设置 › 语言和框架 › 语言服务器 中可以指定其中一个,或选 自动(使用第一个可用的)。 - 附加(写作
+ b):和主服务器同时运行,通常只在用到它的项目中启用。带 Ruff 配置的项目里 Ruff 与 basedpyright 一起运行;带 oxlint 配置的项目里 oxlint 与 vtsls 一起运行;Angular 和 Laravel 项目里分别加上 Angular 和 Laravel 的服务器。
安装语言服务器和调试器
OpenIDEA 不内置语言服务器。打开一个文件而它的服务器缺失时,会弹出通知提示该服务器未安装,并提供 安装 按钮;安装完成后会重新启动这种语言的代码洞察。也可以在一个页面里统一管理所有工具:1
打开语言服务器页面
打开 设置 › 语言和框架 › 语言服务器(
⌘, / Ctrl+Alt+S 后搜索”语言服务器”),或者在 查找操作…(⌘⇧A /
Ctrl+Shift+A)中运行 语言服务器…。2
找到工具
按工具或语言过滤。每一项都会显示它是由 IDE 安装的、在
PATH 上找到的、指定了自定义可执行文件,还是缺失。3
安装,或指向自己的版本
点击 安装(或 重新安装)让 IDE 安装;也可以把 可执行文件 设为你自己安装的程序。
sudo。工具装在本地数据目录下 IDE 自己的工具文件夹里(见 数据目录与日志),按工具选用合适的安装方式:
查找服务器时,IDE 先看设置中指定的可执行文件,再看自己的工具文件夹,最后看
PATH。IDE 无法安装的服务器(例如随 Swift 工具链提供的 sourcekit-lsp,或 Godot 编辑器自带的服务器)会显示安装提示。
配置服务器
在语言服务器页面选中一个语言服务器即可看到它的设置,这些设置保存在languageServers.<name> 下(全局或项目级):
- 关闭该服务器,或在多个备选中选择运行哪一个;
- 可执行文件:要启动的程序;
- 启动:实参、环境变量 和 初始化选项(修改后会重启服务器);
- 工作区配置:用于响应服务器的
workspace/configuration请求,修改后无需重启即可生效。
支持矩阵
下表列出全部内置语言定义。加粗 的服务器和调试器可以在 IDE 中一键安装,其余需要自行安装(IDE 中的安装提示会说明方法)。“高亮”和”Tree-sitter”两列分别表示是否有即时高亮,以及是否有用于大纲和折叠的内置语法。
说明:
- C、C++、Objective-C、Swift:
lldb-dap随 LLVM 或 Xcode 提供。C 和 C++ 也可以用 CodeLLDB 或 GDB 14 及以上版本调试,见 C 与 C++。 - Ruby:
rdbg来自debuggem。 - GDScript:语言服务器和调试器就是 Godot 编辑器本身,见 Godot。
- Arduino:需要 Arduino IDE 2(包含 Arduino Language Server、Arduino CLI 和 clangd)。
- Vue:Vue 服务器和 vtsls 同时运行,TypeScript 部分由 vtsls 处理。
运行、测试与调试
运行配置根据项目中的构建文件自动检测。下表列出各生态会检测出哪些配置,用法见 运行配置、测试 和 调试。
TypeScript、Python、Rust、Go、Java、Kotlin 和 PHP 的运行、测试(含测试树和 重新运行失败的测试)与调试,都在示例项目上做了端到端测试;C 和 C++ 也测试了调试。这几种语言(TypeScript、Python、Rust、Go、Java、Kotlin、PHP)的代码智能都用真实的语言服务器做了测试。