简介
AI 辅助编程铺天盖地,Cursor, VSCode 但凡是个编辑器都加上了 AI 的功能 (Xcode 除外😩)。自然,作为全世界最难用的编辑器 NVIM 也不例外。CopilotChat作为一款插件, 给 Nvim 添加了 AI 辅助编程的能力。
安装
CopilotChat 在 Github 上的位置是:https://github.com/CopilotC-Nvim/CopilotChat.nvim。在 Nvim 下我使用 Lazy.nvim 来管理插件,在合适的位置,添加下方的代码到你的 Lazy 插件的配置里。
{
'CopilotC-Nvim/CopilotChat.nvim',
dependencies = {
{ 'github/copilot.vim' },
{ 'nvim-lua/plenary.nvim', branch = 'master' },
},
build = 'make tiktoken', -- Only on MacOS or Linux
opts = {
window = {
layout = 'float',
width = 0.95,
height = 0.8,
border = 'rounded',
}
},
},
配置
主要是配置一下快捷键,如下面的代码所示,你可以按照自己的习惯更改一下:
-- Copilot short cuts
vim.keymap.set({ 'n', 'v' }, '<leader>cc', ':CopilotChatToggle<CR>')
vim.keymap.set({ 'n', 'v' }, '<leader>ce', ':CopilotChatExplain<CR>')
vim.keymap.set({ 'n', 'v' }, '<leader>ct', ':CopilotChatTests<CR>')
vim.keymap.set({ 'n', 'v' }, '<leader>cr', ':CopilotChatReview<CR>')
vim.keymap.set({ 'n', 'v' }, '<leader>cf', ':CopilotChatFix<CR>')
vim.keymap.set({ 'n', 'v' }, '<leader>cm', ':CopilotChatCommit<CR>')
快捷键包含了以下几个命令的设置,分别的用途我列到下面的表格中:
CopilotChatToggle | 打开或关闭 CopilotChat 窗口 |
CopilotChatExplain | 解释当前选择中的代码 |
CopilotChatTests | 补全当前的单元测试 |
CopilotChatReview | 对当前的代码进行 Review |
CopilotChatFix | 对当前的代码进行修订 |
CopilotChatCommit | 根据 git 中准备提交的内容生成提交信息 |
使用
首先你需要把你的 Copilot 账户与 Nvim 绑定,键入命令:CopilotChatSetup
按照提示将 Copilot 账户绑定。
绑定好之后,在写代码时 Copilot 会根据代码上下文生成代码提示,按下 Tab 键就可以使用提示的内容来填充当前的代码区块。如果不想使用提示的内容来进行填充,就继续写代码忽略掉提示信息就行。
我最喜欢的功能还是使用 Copilot 来生成 Commit message,它会分析你要提交的代码,非常准确地生成出提交信息,做了哪些修改,添加了什么,删除了什么,还会生成概括信息。提交的代码越规范,那么生成出来的 Commit message 越正确。
Copilot review 功能也很不错,它会自动对当前的代码提出建议,可以做一个很好的参考,并且对当前的代码进行改进。
还有一个非常棒的功能就是聊天功能,在 CopilotChat 聊天板里,直接可以和 Copilot 聊编程相关的话题。比如某个函数的使用方法,你可以让 Copilot 给你写一些例子,或者你要查询什么 API 也可以直接问。甚至可以不知道 API 的名称,直接问 Copilot 有没有哪个函数可以完成某件事情,Copilot 都可以很好的回答。或者也可以直接让它推荐一些库来完成某个功能。例如:问如果想要一个支持后端 sqlite3 数据库的 crate,有哪些选择。Copilot 会详细的例出流行的支持 sqlite3 的数据库 crate 以及一些简单的比较。当 Copilot 给出了答案后,你还可以根据答案继续追问,直到找到你需要的内容。
心德
Copilot 是一个强大的助手。熟悉了这一套工作流后,编写代码的速度将会被提高。但是,现在的阶段还不能认为 Copilot 就可以代替人来写代码,因为对于稍微复杂的内容,它还是频繁出现各种问题。可能是因为它的记忆力似乎不是非常好。但是 Copilot 对于能够 hold 住整个项目的人来说,帮助是巨大的。有时候你写好一个函数名称后,它会生成出让你感到惊讶的代码。
未来的开发一定会是:你变成一个管理者,你负责项目里的大的框架,你负责审核代码是否正确,你控制代码的质量。当你对某个细节有疑惑时,你就去询问 Copilot。