Vim 和 Neovim 的免费、超快 Copilot 替代品
Codeium 在所有主要 IDE 中使用 AI 自动完成您的代码。我们为 Vim 和 Neovim 推出了 Codeium 插件的实现,以便为更多开发者带来这种现代编码的超能力。如果您想快速在线试用 Codeium,请查看我们的 Playground。
欢迎贡献!请随意提交拉取请求和与插件相关的问题。
安装 Vim(至少 9.0.0185)或 Neovim(至少 0.6)
使用您选择的 vim 插件管理器或手动安装Exafunction/codeium.vim
。请参阅下面的安装选项。
运行:Codeium Auth
设置插件并开始使用 Codeium。
您可以运行:help codeium
获取命令和配置选项的完整列表,或者参阅本指南获取有关如何使用 Codeium 的快速教程。
要获取配置选项的完整列表,您可以运行:help codeium
。下面重点介绍了一些最受欢迎的选项。
Codeium 提供了以下函数来控制建议:
行动 | 功能 | 默认绑定 |
---|---|---|
清除当前建议 | codeium#Clear() |
|
下一个建议 | codeium#CycleCompletions(1) |
|
之前的建议 | codeium#CycleCompletions(-1) |
|
插入建议 | codeium#Accept() |
|
手动触发建议 | codeium#Complete() |
|
接受建议 | codeium#AcceptNextWord() |
|
接受建议行 | codeium#AcceptNextLine() |
|
Codeium 的默认键绑定可以通过设置禁用
let g: codeium_disable_bindings = 1
或者在 Neovim 中:
vim . g . codeium_disable_bindings = 1
如果您只想禁用
绑定,您也可以使用g:codeium_no_map_tab
选项。
如果您想将上面的操作绑定到不同的键,这在 Vim 中可能类似于以下内容:
imap codeium#Accept()
imap codeium#AcceptNextWord()
imap codeium#AcceptNextLine()
imap call codeium#CycleCompletions(1)
imap call codeium#CycleCompletions(-1)
imap call codeium#Clear()
或者在 Neovim 中(使用 wbthomason/packer.nvim 或 folke/lazy.nvim):
-- Remove the `use` here if you're using folke/lazy.nvim.
use {
' Exafunction/codeium.vim ' ,
config = function ()
-- Change '' here to any keycode you like.
vim . keymap . set ( ' i ' , ' ' , function () return vim . fn [ ' codeium#Accept ' ]() end , { expr = true , silent = true })
vim . keymap . set ( ' i ' , ' ' , function () return vim . fn [ ' codeium#CycleCompletions ' ]( 1 ) end , { expr = true , silent = true })
vim . keymap . set ( ' i ' , ' ' , function () return vim . fn [ ' codeium#CycleCompletions ' ]( - 1 ) end , { expr = true , silent = true })
vim . keymap . set ( ' i ' , ' ' , function () return vim . fn [ ' codeium#Clear ' ]() end , { expr = true , silent = true })
end
}
(确保您在安装后运行:Codeium Auth
。)
可以通过在 vim 配置文件 (vimrc/init.vim) 中设置g:codeium_filetypes
变量来禁用特定文件类型的 Codeium:
let g: codeium_filetypes = {
" bash " : v: false ,
" typescript " : v: true ,
}
Codeium 默认对大多数文件类型启用。
您还可以使用g:codeium_enabled
变量默认禁用codeium,并通过运行:CodeiumEnable
为每个缓冲区手动启用它:
let g: codeium_enabled = v: false
或者在 Neovim 中:
vim . g . codeium_enabled = false
或者,您可以使用g:codeium_filetypes_disabled_by_default
变量为所有文件类型禁用 codeium,并使用g:codeium_filetypes
变量有选择地为指定文件类型启用 codeium:
" let g:codeium_enabled = v:true
let g: codeium_filetypes_disabled_by_default = v: true
let g: codeium_filetypes = {
" rust " : v: true ,
" typescript " : v: true ,
}
如果您只想禁用自动触发完成:
let g: codeium_manual = v: true " You might want to use `CycleOrComplete()` instead of `CycleCompletions(1)`. " This will make the forward cycling of suggestions also trigger the first " suggestion manually. imapcall codeium#CycleOrComplete()
要禁用建议的自动文本呈现(建议显示的灰色文本):
let g: codeium_render = v: false
Codeium 状态可以通过调用codeium#GetStatusString()
函数生成。在 Neovim 中,您可以使用vim.api.nvim_call_function("codeium#GetStatusString", {})
代替。它生成一个 3 个字符长的字符串,带有 Codeium 状态:
'3/8'
- 8 个建议中的第三个'0'
-Codeium 未返回任何建议'*'
- 等待 Codeium 响应在正常模式下,状态通过显示'ON'
或'OFF'
来显示 Codeium 是否启用或禁用。
为了在状态行中显示它,请将以下行添加到您的.vimrc
中:
set statusline+={…}%3{codeium#GetStatusString()}
没有 Codeium 徽标的较短版本:
set statusline+=%3{codeium#GetStatusString()}
请检查:help statusline
以获取有关在 VIM 中构建状态行的更多信息。
自提交 3854429d 以来,vim-airline 支持 Codeium 开箱即用。
调用codeium#Chat()
函数或使用Codeium Chat
命令将在当前项目中启用搜索和索引,并在新的浏览器窗口中启动 Codeium Chat。
: call codeium#Chat ()
:Codeium Chat
项目根目录是通过在 Vim 的当前工作目录中查找某些特定文件或目录来确定的,并向上查找父目录,直到找到为止。此提示列表是用户可配置的,默认值为:
let g:codeium_workspace_root_hints = ['.bzr','.git','.hg','.svn','_FOSSIL_','package.json']
请注意,启动聊天可以启用遥测。
{
' Exafunction/codeium.vim ' ,
event = ' BufEnter '
}
Plug ' Exafunction/codeium.vim ' , { ' branch ' : ' main ' }
Plugin ' Exafunction/codeium.vim '
use ' Exafunction/codeium.vim '
运行以下命令。在 Windows 上,您可以将~/.vim
替换为$HOME/vimfiles
:
git clone https://github.com/Exafunction/codeium.vim ~ /.vim/pack/Exafunction/start/codeium.vim
运行以下命令。在 Windows 上,您可以将~/.config
替换为$HOME/AppData/Local
:
git clone https://github.com/Exafunction/codeium.vim ~ /.config/nvim/pack/Exafunction/start/codeium.vim