
copilot.lua
让 Neovim 秒变 AI 补全编辑器,Tab 即用
copilot.lua 是 Neovim 中 GitHub Copilot 的完整增强替代品,用 Lua 编写,目标是让 Neovim 用户获得比 copilot.vim 更顺滑的 AI 补全体验。它直接与 GitHub Copilot 服务通信,在编辑器中以虚拟文本形式实时展示建议,按 Tab 即可采纳,并支持逐词接受、部分接受等精细操作。项目内置与 nvim-cmp 的集成方案,可把 Copilot 建议接入补全菜单,也提供 API 供其他插件调用,方便自定义触发条件、快捷键与显示方式。相比官方 copilot.vim,它的配置更灵活、可编程性更强,并支持通过 LSP 方式与 Copilot 服务交互。适合已经深度使用 Neovim、希望把 AI 补全无缝融入现有工作流,并愿意用 Lua 做个性化配置的开发者。
项目数据
使用教程
环境要求
- NeoVim 0.11.0 或更高版本
- NodeJS v22 或更高版本
- 已安装插件管理器(如 packer.nvim)
- (可选)copilot-lsp 用于 NES 功能
安装与启动步骤
-
1确认环境版本
先检查 NeoVim 与 NodeJS 版本,低于 0.11.0 / v22 需要先升级,否则 Copilot 服务无法运行。
nvim --version node -v -
2安装插件
用你习惯的插件管理器添加 zbirenbaum/copilot.lua;需要 NES 功能时再加上 copilot-lsp 依赖。
use { "zbirenbaum/copilot.lua", requires = { "copilotlsp-nvim/copilot-lsp", -- (optional) for NES functionality }, } -
3配置懒加载
Copilot 服务启动需要时间,README 建议懒加载:以 Copilot 命令和 InsertEnter 事件触发,避免拖慢启动。
use { "zbirenbaum/copilot.lua", requires = { "copilotlsp-nvim/copilot-lsp", -- (optional) for NES functionality }, cmd = "Copilot", event = "InsertEnter", config = function() require("copilot").setup({}) end, } -
4调用 setup 启动
必须执行 require("copilot").setup(options) 才会启动 Copilot;不传参数即使用默认配置。
require("copilot").setup({}) -
5按需自定义配置
在 setup 的 table 中覆盖默认项,例如面板、建议键位、模型、Node 路径等,再重启 Neovim 生效。
require('copilot').setup({ panel = { enabled = true }, suggestion = { enabled = true, auto_trigger = false, keymap = { accept = "" }, }, copilot_node_command = 'node', })
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
suggestion.enabled | 否 | 是否启用内联虚拟文本建议(默认 true) | true |
suggestion.auto_trigger | 否 | 是否自动触发建议,默认关闭需手动触发 | false |
panel.enabled | 否 | 是否启用建议列表面板 | true |
nes.enabled | 否 | 启用 NES 功能,需以 copilot-lsp 为依赖 | false |
copilot_node_command | 否 | 调用 Copilot 服务使用的 Node 命令,需 v22+ | node |
auth_provider_url | 否 | 非 github.com 的认证提供方地址,默认 nil | nil |
如何确认成功
重启 Neovim 后执行 :Copilot 命令,或进入插入模式看到灰色虚拟文本建议即为生效。
常见问题
Q:提示版本不满足怎么办?
A:本项目要求 NeoVim 0.11.0 以上、NodeJS v22 以上,请先升级对应运行时再安装插件。
Q:为什么要懒加载?
A:README 说明 Copilot 服务启动需要一定时间,推荐用 cmd = "Copilot"、event = "InsertEnter" 懒加载以避免影响启动速度。
Q:怎么启用 NES 功能?
A:需要额外安装 copilotlsp-nvim/copilot-lsp 作为依赖,并把配置中的 nes.enabled 设为 true。
Q:默认按什么键采纳建议?
A:默认配置下 accept 为
注意事项
- 必须调用 require("copilot").setup(options) 才会启动 Copilot,未调用则不生效。
- 认证方式见 README 的 Authentication 一节;使用替代 GitHub 实例时通过 auth_provider_url 指定。
- 不传任何参数时使用 README 中列出的默认配置。
- copilot-lsp 为可选依赖,仅在需要 NES 功能时安装。
核心亮点
- 纯 Lua 实现,配置项丰富,可精细控制触发、显示与接受行为
- 支持 nvim-cmp 集成,补全建议能进入统一菜单而非独立浮层
- 提供 API 与虚拟文本渲染,便于其他插件扩展和自定义交互
不足之处
- 依赖 GitHub Copilot 订阅与网络,离线或未授权时无法使用
- 与 Neovim 版本及 nvim-cmp 等插件存在兼容性要求,配置门槛偏高
适用场景
- Neovim 用户写代码时实时获得整行或函数级补全建议
- 把 Copilot 建议接入 nvim-cmp 菜单,与 LSP 补全统一展示
- 插件开发者调用其 API 构建自定义 AI 补全交互
替代项目
copilot.vim、codeium.nvim
项目介绍
同类项目推荐
bolt.new
开源
想到啥说啥,网页应用当场生成直接能用
Prompt, run, edit, and deploy full-stack web applications. -- bolt.new -- Help Cente···
fuzz4all
开源
用大模型自动生成测试输入,发现各种软件漏洞
️Fuzz4All: Universal Fuzzing with Large Language Models
superpowers-zh
开源
全套 AI 编程神技汉化好了,照着用就行。
AI 编程超能力 · 中文增强版 — superpowers(250k+ ⭐)完整汉化 + 4 个中国原创 skills···
Gitea 代码托管
开源
轻量 Git 代码托管平台
Git with a cup of tea! Painless self-hosted all-in-one software development service,···