Skip to main content

使用 LSP 服务器与 GitHub Copilot 命令行界面 (CLI)

LSP 服务器提供 Copilot 命令行界面(CLI) 精确的代码智能,使它可以在项目中准确导航定义、查找引用和重命名符号。

介绍

语言服务器协议(LSP)是一种开放标准,用于在代码编辑器和语言服务器之间进行通信。 语言服务器是一种提供特定编程语言功能的服务,例如“转到定义”和在整个代码库中重命名代码符号。 “LSP 服务器”是支持语言服务器协议的任何语言服务器。

          GitHub Copilot 命令行界面 (CLI) 可以使用 LSP 服务器更准确地了解代码的结构。 通过为项目中的每种编程语言添加和配置 LSP 服务器,您将使 Copilot 命令行界面(CLI) 更好地理解您的代码。

LSP 服务器的优点

  • 准确性:结果来自语言自己的编译器/分析器,提供对代码结构的理解。 当它与代码一起使用时,这将提高 Copilot精度。 例如,当 Copilot 可以使用“转到定义”时,它将找到实际的定义,而不是仅仅看起来相似的文本匹配。
  • 令牌效率:“列出所有符号”或“查找引用”之类的操作将返回压缩的结构化结果,而不是要求代理将整个文件读取到会话中。
  • 安全重构:重命名符号时,LSP 服务器会可靠地更新项目中的每个引用。
  • 速度:语言服务器在后台为项目编制索引,允许近乎即时的响应。

LSP 服务器允许 Copilot 命令行界面(CLI) 执行的操作

当 LSP 服务器可用时, Copilot 命令行界面(CLI) 会自动使用它们。 无需特别请求它。 Copilot 命令行界面(CLI) 将在可以访问您所用编程语言的 LSP 服务器时,优先使用 LSP 服务器而不是基于文本的搜索。

支持以下语言服务器操作:

运算它的作用是什么
转到定义跳转到定义符号(函数、类、变量)的位置。
查找引用查找使用符号的每个位置。
悬停检索符号的类型信息和文档。
重命名在整个项目中重命名符号,并更新所有引用。
文档符号列出文件中定义的所有符号。
工作区符号搜索在项目中按名称搜索符号。
转到实现查找接口或抽象方法的实现。
来电显示哪些函数调用给定函数。
传出呼叫显示给定函数所调用的函数。
          Copilot 根据提示选择最合适的 LSP 操作。 例如,如果询问“`handlePayment`定义在哪里?”,Copilot 将使用“跳转到定义”操作。

如何添加 LSP 服务器

若要 Copilot 命令行界面(CLI) 能够使用 LSP 服务器,必须先在本地计算机上安装服务器软件,然后在启动时读取的配置文件 Copilot 命令行界面(CLI) 之一中对其进行配置。 请参阅“为 GitHub Copilot 命令行界面 (CLI) 添加 LSP 服务器”。

还可以将 LSP 服务器添加为你选择安装的 CLI 插件的一部分。 例如,如果插件设计为使用不常见的编程语言或特定于框架的文件类型,则可能包含 LSP 服务器。 安装插件时,作为插件的一部分包含的 LSP 服务器将自动可用,无需进行其他配置。 如果卸载插件,则会删除 LSP 服务器。 有关详细信息,请参阅“关于 GitHub Copilot 命令行界面 (CLI) 的插件”。

如何加载 LSP 服务器

启动时 GitHub Copilot 命令行界面 (CLI) ,它会从具有以下优先级的多个源加载 LSP 服务器配置(最高到最低):

  1.        **Project配置文件**:当前存储库中的 `.github/lsp.json`。
    
  2.        **插件配置**:已安装插件提供的语言服务器。
    
  3.        **用户配置**: `~/.copilot/lsp-config.json`.
    

高优先级配置会覆盖具有相同服务器名称的低优先级配置。 这意味着项目可以为所有参与者自定义或禁用语言服务器。

信任工作目录后, Copilot 命令行界面(CLI) 会在后台自动启动与项目相关的任何 LSP 服务器,以便在需要时立即做出响应。

后续步骤

延伸阅读