Skip to main content

为 GitHub Copilot 命令行界面 (CLI) 添加 LSP 服务器

可以添加 LSP 服务器来提供 Copilot 命令行界面(CLI) 精确的代码智能,提高其导航定义、查找引用和重命名符号的能力。

介绍

本文介绍如何为 Copilot 命令行界面(CLI). 添加 LSP 服务器。 有关 LSP 服务器的概念信息,请参阅 在 GitHub Copilot 命令行界面 (CLI) 中使用 LSP 服务器

添加 LSP 服务器 Copilot 命令行界面(CLI) 是一个两个步骤的过程:

  1. 在本地计算机上安装 LSP 服务器软件。
  2. 在配置文件中配置服务器。

本文将详细介绍这些步骤。

安装和配置 LSP 服务器

可以通过以下任一方法为特定语言添加 LSP 服务器:

  • 使用lsp-setup技能自动化流程。
  • 手动安装服务器软件,然后配置 Copilot 命令行界面(CLI) 以使用服务器。

以下各节介绍了这两种方法。

使用lsp-setup技能来添加语言服务器

lsp-setup“真棒GitHub Copilot”存储库中的技能可自动安装和配置一系列常用语言。

  1. 请访问“Awesome”下载网站,然后搜索“lsp”:

https://awesome-copilot.github.com/skills/?q=lsp。

  1. 下载lsp-setup技能。

  2. 解压缩下载的.zip文件,创建一个名为lsp-setup的目录。

  3. lsp-setup 目录移动到以下任一项:

    • 个人技能目录: ~/.copilot/skills/
    • Git 存储库中的项目技能目录:.github/skills/
  4. 启动 Copilot 命令行界面(CLI),或者如果当前处于 CLI 会话中,请输入 /skills reload

  5. 输入提示:

    Copilot prompt
    setup lsp
    
  6. 按照屏幕上的说明选择要设置的服务器的语言,然后完成其他步骤。

  7. 该过程完成后,输入 /lsp reload 以加载新的 LSP 服务器。

  8. 检查服务器是否已添加并正常运行。 请参阅本文后面部分 的“确认 LSP 服务器可用 ”。

手动安装和配置 LSP 服务器

为特定语言安装 LSP 服务器通常涉及通过包管理器(例如 npmgempip)安装包。

若要手动安装 LSP 服务器,请参阅要安装的特定语言服务器的文档。 下面列出了用于安装常用 LSP 服务器的一些示例命令。

注意

用于查找不同语言的 LSP 服务器的有用资源包括:

注意

仅从信任的源安装 LSP 服务器。

示例安装命令:TypeScript 和 JavaScript

如果已安装 Node.js,可以使用以下命令安装 typescript-language-server LSP 服务器:

Bash
npm install -g typescript typescript-language-server

typescript-language-server LSP 服务器同时支持 TypeScript 和 JavaScript。

示例安装命令:Ruby

如果已安装 gem,可以使用以下命令安装 ruby-lsp LSP 服务器:

Bash
gem install ruby-lsp

或者,可以使用以下命令安装适用于 Ruby 的 solargraph LSP 服务器:

Bash
gem install solargraph

示例安装命令:Python

如果已安装 Node.js,可以使用以下命令安装 pyright LSP 服务器:

Bash
npm install -g pyright

或者,如果已安装 pip,可以使用以下命令安装 python-lsp-server LSP 服务器:

Bash
pip install python-lsp-server

配置语言服务器

  1. 若要配置 LSP 服务器,请将服务器定义添加到两个配置文件之一:

    • 用户配置~/.copilot/lsp-config.json 适用于所有项目。
    • Project配置:存储库中的 .github/lsp.json 适用于处理该project的每个人。

    这两个文件使用相同的 JSON 语法:

    {
      "lspServers": {
        "SERVER-NAME": {
          "command": "COMMAND",
          "args": ["ARG1", "ARG2"],
          "fileExtensions": {
            ".EXT": "LANGUAGE-ID"
          }
        },
        "ANOTHER-SERVER": {
          ...
        }
      }
    }
    

    本文后面提供了特定 LSP 服务器的一些服务器定义示例。

  2. 安装和配置服务器后,确认 Copilot 命令行界面(CLI) 可以使用它。 请参阅下面的 “确认 LSP 服务器可用 ”。

配置字段

配置文件中的每个服务器定义都必须具有唯一的名称,并且仅包含字母数字字符、下划线和连字符。

在每个服务器定义中,以下字段可用/必需:

领域必需说明
command是的用于启动 LSP 服务器的命令。
args要传递给命令的参数。
fileExtensions是的文件扩展名及其对应语言 ID 的 JSON 映射(例如 { ".rs": "rust" })。
env启动服务器时要设置的环境变量。 支持 ${VAR}${VAR:-default} 扩展语法。
rootUriLSP 服务器的根目录,相对于 Git 根目录。 默认为 "."。 适用于 monorepos。 如果项目位于 Git 存储库的子目录中,而不是存储库根目录,请将rootUri设置为该子目录路径。
initializationOptions启动期间发送到服务器的自定义选项。
requestTimeoutMs服务器请求的超时时间为毫秒(默认值:90 秒)。

示例服务器定义: typescript-language-server LSP 服务器

JSON
{
  "lspServers": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"],
      "fileExtensions": {
        ".ts": "typescript",
        ".tsx": "typescriptreact",
        ".js": "javascript",
        ".jsx": "javascriptreact",
        ".mjs": "javascript",
        ".cjs": "javascript",
        ".mts": "typescript",
        ".cts": "typescript"
      }
    }
  }
}

示例服务器定义: ruby-lsp LSP 服务器

JSON
{
  "lspServers": {
    "ruby": {
      "command": "ruby-lsp",
      "args": [],
      "fileExtensions": {
        ".rb": "ruby",
        ".rbw": "ruby",
        ".rake": "ruby",
        ".gemspec": "ruby"
      }
    }
  }
}

示例服务器定义:用于 Python 的 pyright LSP 服务器

JSON
{
  "lspServers": {
    "python": {
      "command": "pyright-langserver",
      "args": ["--stdio"],
      "fileExtensions": {
        ".py": "python",
        ".pyw": "python",
        ".pyi": "python"
      }
    }
  }
}

使用 /lsp 命令管理语言服务器

可以使用斜杠命令在交互式 CLI 会话 /lsp 中列出和管理 LSP 服务器:

斜杠命令说明
/lsp/lsp show显示所有配置的 LSP 服务器的状态。
/lsp test SERVER-NAME测试服务器是否正确启动。
/lsp reload从磁盘重新加载 LSP 配置。
/lsp help显示 /lsp 命令信息。

列出可用的 LSP 服务器

  1. 在 Copilot 命令行界面(CLI)中,使用斜杠命令确认所选的 LSP 服务器可用 /lsp 。 你将看到如下输出:

    ● LSP Server Status:
    
      User-configured servers:
        • ruby: ruby-lsp (.rb, .rbw, .rake, .gemspec)
        • omnisharp: omnisharp (.cs)
    
      User config: /Users/username/.copilot/lsp-config.json
    

确认 LSP 服务器可用

  1. 添加和配置 LSP 服务器后,启动(或重启)。 Copilot 命令行界面(CLI)

  2. 使用斜杠命令: /lsp test SERVER-NAME 检查 LSP 服务器是否正常工作。

Copilot 命令行界面(CLI) 尝试启动服务器的临时独立实例,并报告它是否成功,或者是否存在任何错误。 然后,它会终止临时服务器进程。

延伸阅读