Thanks to visit codestin.com
Credit goes to docs.github.com

Skip to main content

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

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

介绍

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

添加 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。
    
  2. 下载lsp-setup技能。

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

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

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

  6. 输入提示:

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

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

  9. 检查服务器是否已添加并正常运行。 请参阅本文后面部分 的“确认 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} 扩展语法。
rootUri LSP 服务器的根目录,相对于 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) 尝试启动服务器的临时独立实例,并报告它是否成功,或者是否存在任何错误。 然后,它会终止临时服务器进程。
    

延伸阅读