介绍
本文介绍如何为 Copilot 命令行界面(CLI). 添加 LSP 服务器。 有关 LSP 服务器的概念信息,请参阅 使用 LSP 服务器与 GitHub Copilot 命令行界面 (CLI)。
添加 LSP 服务器 Copilot 命令行界面(CLI) 是一个两个步骤的过程:
- 在本地计算机上安装 LSP 服务器软件。
- 在配置文件中配置服务器。
本文将详细介绍这些步骤。
安装和配置 LSP 服务器
可以通过以下任一方法为特定语言添加 LSP 服务器:
- 使用
lsp-setup技能自动化流程。 - 手动安装服务器软件,然后配置 Copilot 命令行界面(CLI) 以使用服务器。
以下各节介绍了这两种方法。
使用lsp-setup技能来添加语言服务器
`lsp-setup`“真棒GitHub Copilot”存储库中的技能可自动安装和配置一系列常用语言。
-
请访问“Awesome”下载网站,然后搜索“lsp”:
https://awesome-copilot.github.com/skills/?q=lsp。 -
下载
lsp-setup技能。 -
解压缩下载的
.zip文件,创建一个名为lsp-setup的目录。 -
将
lsp-setup目录移动到以下任一项:- 个人技能目录:
~/.copilot/skills/ - Git 存储库中的项目技能目录:
.github/skills/
- 个人技能目录:
-
启动 Copilot 命令行界面(CLI),或者如果当前处于 CLI 会话中,请输入
/skills reload。 -
输入提示:
Copilot prompt setup lsp
setup lsp -
按照屏幕上的说明选择要设置的服务器的语言,然后完成其他步骤。
-
该过程完成后,输入
/lsp reload以加载新的 LSP 服务器。 -
检查服务器是否已添加并正常运行。 请参阅本文后面部分 的“确认 LSP 服务器可用 ”。
手动安装和配置 LSP 服务器
为特定语言安装 LSP 服务器通常涉及通过包管理器(例如 npm, gem或 pip)安装包。
若要手动安装 LSP 服务器,请参阅要安装的特定语言服务器的文档。 下面列出了用于安装常用 LSP 服务器的一些示例命令。
注意
仅从信任的源安装 LSP 服务器。
示例安装命令:TypeScript 和 JavaScript
如果已安装 Node.js,可以使用以下命令安装 typescript-language-server LSP 服务器:
npm install -g typescript typescript-language-server
npm install -g typescript typescript-language-server
`typescript-language-server` LSP 服务器同时支持 TypeScript 和 JavaScript。
示例安装命令:Ruby
如果已安装 gem,可以使用以下命令安装 ruby-lsp LSP 服务器:
gem install ruby-lsp
gem install ruby-lsp
或者,可以使用以下命令安装适用于 Ruby 的 solargraph LSP 服务器:
gem install solargraph
gem install solargraph
示例安装命令:Python
如果已安装 Node.js,可以使用以下命令安装 pyright LSP 服务器:
npm install -g pyright
npm install -g pyright
或者,如果已安装 pip,可以使用以下命令安装 python-lsp-server LSP 服务器:
pip install python-lsp-server
pip install python-lsp-server
配置语言服务器
-
若要配置 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 服务器的一些服务器定义示例。
- 用户配置:
-
安装和配置服务器后,确认 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 服务器
{
"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"
}
}
}
}
{
"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 服务器
{
"lspServers": {
"ruby": {
"command": "ruby-lsp",
"args": [],
"fileExtensions": {
".rb": "ruby",
".rbw": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}
}
{
"lspServers": {
"ruby": {
"command": "ruby-lsp",
"args": [],
"fileExtensions": {
".rb": "ruby",
".rbw": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}
}
示例服务器定义:用于 Python 的 pyright LSP 服务器
{
"lspServers": {
"python": {
"command": "pyright-langserver",
"args": ["--stdio"],
"fileExtensions": {
".py": "python",
".pyw": "python",
".pyi": "python"
}
}
}
}
{
"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 服务器
-
在 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 服务器可用
-
添加和配置 LSP 服务器后,启动(或重启)。 Copilot 命令行界面(CLI)
-
使用斜杠命令:
/lsp test SERVER-NAME检查 LSP 服务器是否正常工作。Copilot 命令行界面(CLI) 尝试启动服务器的临时独立实例,并报告它是否成功,或者是否存在任何错误。 然后,它会终止临时服务器进程。