Skip to main content
Skip to content

为 GitHub Copilot CLI 添加 LSP 服务器

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

介绍

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

为 Copilot CLI 添加 LSP 服务器是一个两步流程:

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

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

安装和配置 LSP 服务器

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

  • 使用 lsp-setup 技能,该技能可自动化这一流程。
  • 手动安装服务器软件,然后配置 Copilot CLI 以使用服务器。

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

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

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

  1. 请访问“Awesome GitHub Copilot”下载网站,然后搜索“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 服务器通常涉及通过包管理器(例如 npm, gem或 pip)安装包。

若要手动安装 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} 扩展语法。
rootUri否LSP 服务器的根目录,相对于 Git 根目录。 默认为 "."。 适用于单存储库。 如果项目位于 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 logs打开实时 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 尝试启动服务器的临时独立实例,并报告它是否成功,或者是否存在任何错误。 然后,它会终止临时服务器进程。

延伸阅读