Note
There is a new command: CopilotChatInPlace
, which functions similarly to ChatGPT plugin. You can find it in the canary branch.
It will prompt you with instructions on your first start. If you already have Copilot.vim
or Copilot.lua
, it will work automatically.
pip install python-dotenv requests pynvim==0.5.0 prompt-toolkit
- Put it in your lazy setup
return {
{
"jellydn/CopilotChat.nvim",
opts = {
mode = "split", -- newbuffer or split , default: newbuffer
},
build = function()
vim.defer_fn(function()
vim.cmd("UpdateRemotePlugins")
vim.notify("CopilotChat - Updated remote plugins. Please restart Neovim.")
end, 3000)
end,
event = "VeryLazy",
keys = {
{ "<leader>cce", "<cmd>CopilotChatExplain<cr>", desc = "CopilotChat - Explain code" },
{ "<leader>cct", "<cmd>CopilotChatTests<cr>", desc = "CopilotChat - Generate tests" },
},
},
}
- Run
:UpdateRemotePlugins
- Restart
neovim
- Put the files in the right place
$ git clone https://github.com/gptlang/CopilotChat.nvim
$ cd CopilotChat.nvim
$ cp -r --backup=nil rplugin ~/.config/nvim/
- Install dependencies
$ pip install -r requirements.txt
- Open up Neovim and run
:UpdateRemotePlugins
- Restart Neovim
You have the ability to tailor this plugin to your specific needs using the configuration options outlined below:
{
debug = false, -- Enable or disable debug mode
prompts = { -- Set dynamic prompts for CopilotChat commands
Explain = 'Explain how it works.',
Tests = 'Briefly explain how the selected code works, then generate unit tests.',
}
}
You have the capability to expand the prompts to create more versatile commands:
return {
"jellydn/CopilotChat.nvim",
opts = {
mode = "split",
prompts = {
Explain = "Explain how it works.",
Review = "Review the following code and provide concise suggestions.",
Tests = "Briefly explain how the selected code works, then generate unit tests.",
Refactor = "Refactor the code to improve clarity and readability.",
},
},
build = function()
vim.defer_fn(function()
vim.cmd("UpdateRemotePlugins")
vim.notify("CopilotChat - Updated remote plugins. Please restart Neovim.")
end, 3000)
end,
event = "VeryLazy",
keys = {
{ "<leader>cce", "<cmd>CopilotChatExplain<cr>", desc = "CopilotChat - Explain code" },
{ "<leader>cct", "<cmd>CopilotChatTests<cr>", desc = "CopilotChat - Generate tests" },
{ "<leader>ccr", "<cmd>CopilotChatReview<cr>", desc = "CopilotChat - Review code" },
{ "<leader>ccR", "<cmd>CopilotChatRefactor<cr>", desc = "CopilotChat - Refactor code" },
}
}
For further reference, you can view my configuration.
- Copy some code into the unnamed register using the
y
command. - Run the command
:CopilotChat
followed by your question. For example,:CopilotChat What does this code do?
- Copy some code into the unnamed register using the
y
command. - Run the command
:CopilotChatExplain
.
- Copy some code into the unnamed register using the
y
command. - Run the command
:CopilotChatTests
.
- Translation to pure Lua
- Tokenizer
- Use vector encodings to automatically select code
- Sub commands - See issue #5
Thanks goes to these wonderful people (emoji key):
gptlang 💻 📖 |
Dung Duc Huynh (Kaka) 💻 📖 |
Ahmed Haracic 💻 |
Trí Thiện Nguyễn 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!