# Summary ## **常见的语言服务** - Python → **Pylance**(微软开发的,基于 Pyright,非常快)、Jedi - Java → **Language Support for Java(TM) by Red Hat** - Go → **gopls** - TypeScript/JavaScript → **内置 TypeScript Server** # Cues # Notes 你问的这个问题,本质上是**“工具为什么能理解代码” 的经典问题变体**。 --- ## **语言服务(Language Server)的含义** 在 [[IDE]] / 编辑器里,**语言服务**指的是一套“理解代码语义”的后台程序。 它负责让编辑器知道: - 一个变量是在哪里定义的; - 一个函数需要什么参数; - 一个类有哪些方法; - 哪些地方有语法错误; - 如何做智能补全、跳转、重构。 编辑器本身(像 VS Code、Cursor)只是个“外壳”,它**不懂 Python/Java 语法**。真正理解代码的就是 **语言服务**。 --- ## **典型的语言服务协议:LSP** 业界有一个标准叫 **LSP(Language Server Protocol)**: - **Client**:编辑器(VS Code、Cursor、NeoVim…) - **Server**:语言服务(比如 Python 的 Pylance,Java 的 RedHat Java Language Server) 编辑器把你在界面上的操作(比如“点一个类名”)发给语言服务,语言服务返回“这个类定义在某个文件的第 42 行”。于是编辑器就能帮你跳转。 --- ## **举个例子** 假设你写的是 Python: - **没有语言服务** → 编辑器只会把代码当成普通文本,没法识别 import,也不能跳转。 - **有 Pylance 语言服务** → - 你输入 `os.pa` → 自动提示 `path`; - 你点 `os.path` → 能跳转到源码; - 写错 `pritn` → 会被标红提示语法错误。 --- ## **常见的语言服务** - Python → **Pylance**(微软开发的,基于 Pyright,非常快)、Jedi - Java → **Language Support for Java(TM) by Red Hat** - Go → **gopls** - TypeScript/JavaScript → **内置 TypeScript Server** --- 👉 所以你在 Cursor 里遇到的问题,其实就是:**Python 的语言服务没启动,而 Java 的语言服务启动了**,导致编辑器表现得像是个 Java IDE。