codeium.vim
适用于Vim和Neovim的免费、超快速的Copilot替代品
Codeium在所有主要IDE中使用AI自动完成你的代码。我们推出了这个适用于Vim和Neovim的Codeium插件实现,为更多开发者带来这种现代编码超能力。如果你想快速在线试用Codeium,可以查看我们的playground。
欢迎贡献!随时提交与插件相关的拉取请求和问题。
🚀 开始使用
-
使用你选择的vim插件管理器安装
Exafunction/codeium.vim
,或手动安装。详见下方安装选项。 -
运行
:Codeium Auth
设置插件并开始使用Codeium。
你可以运行:help codeium
获取完整的命令和配置选项列表,或查看本指南快速了解如何使用Codeium。
🛠️ 配置
要获取完整的配置选项列表,可以运行:help codeium
。
以下是一些最常用选项的亮点。
⌨️ 按键绑定
Codeium提供以下函数来控制建议:
操作 | 函数 | 默认绑定 |
---|---|---|
清除当前建议 | codeium#Clear() | <C-]> |
下一个建议 | codeium#CycleCompletions(1) | <M-]> |
上一个建议 | codeium#CycleCompletions(-1) | <M-[> |
插入建议 | codeium#Accept() | <Tab> |
手动触发建议 | codeium#Complete() | <M-Bslash> |
可以通过设置以下内容来禁用Codeium的默认按键绑定
let g:codeium_disable_bindings = 1
或在Neovim中:
vim.g.codeium_disable_bindings = 1
如果你只想禁用<Tab>
绑定,可以使用g:codeium_no_map_tab
选项。
如果你想将上述操作绑定到不同的按键,在Vim中可能如下所示:
imap <script><silent><nowait><expr> <C-g> codeium#Accept()
imap <C-;> <Cmd>call codeium#CycleCompletions(1)<CR>
imap <C-,> <Cmd>call codeium#CycleCompletions(-1)<CR>
imap <C-x> <Cmd>call codeium#Clear()<CR>
或在Neovim中(使用wbthomason/packer.nvim或folke/lazy.nvim):
-- 如果使用folke/lazy.nvim,请移除这里的`use`。
use {
'Exafunction/codeium.vim',
config = function ()
-- 在这里将'<C-g>'更改为你喜欢的任何按键代码。
vim.keymap.set('i', '<C-g>', function () return vim.fn['codeium#Accept']() end, { expr = true, silent = true })
vim.keymap.set('i', '<c-;>', function() return vim.fn['codeium#CycleCompletions'](1) end, { expr = true, silent = true })
vim.keymap.set('i', '<c-,>', function() return vim.fn['codeium#CycleCompletions'](-1) end, { expr = true, silent = true })
vim.keymap.set('i', '<c-x>', function() return vim.fn['codeium#Clear']() end, { expr = true, silent = true })
end
}
(确保在安装后运行了:Codeium Auth
。)
⛔ 禁用Codeium
可以通过在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
" 你可能想使用`CycleOrComplete()`而不是`CycleCompletions(1)`。
" 这将使向前循环建议也手动触发第一个建议。
imap <C-;> <Cmd>call codeium#CycleOrComplete()<CR>
要禁用建议的自动文本渲染(出现建议的灰色文本):
let g:codeium_render = v:false
在状态栏中显示Codeium状态
可以通过调用codeium#GetStatusString()
函数生成Codeium状态。在
Neovim中,你可以使用vim.api.nvim_call_function("codeium#GetStatusString", {})
代替。
它会产生一个3个字符长的字符串,显示Codeium状态:
'3/8'
- 8个建议中的第3个'0'
- Codeium没有返回建议'*'
- 等待Codeium响应
在普通模式下,状态显示Codeium是启用还是禁用,显示
'ON'
或'OFF'
。
要在状态栏中显示它,请在.vimrc
中添加以下行:
set statusline+=\{…\}%3{codeium#GetStatusString()}
没有Codeium logo的较短变体:
set statusline+=%3{codeium#GetStatusString()}
请查看:help statusline
以获取有关在VIM中构建状态栏的更多信息。
vim-airline自commit 3854429d起原生支持Codeium。
启动Codeium聊天
调用codeium#Chat()
函数将在当前项目中启用搜索和索引,并在新的浏览器窗口中启动Codeium聊天。
:call codeium#Chat()
通过在Vim的当前工作目录中查找一些特定文件或目录是否存在来确定项目根目录,并向上查找父目录直到找到一个。这个提示列表是用户可配置的,默认值是:
let g:codeium_workspace_root_hints = ['.bzr','.git','.hg','.svn','_FOSSIL_','package.json']
注意,启动聊天会启用遥测。
💾 安装选项
💤 Lazy
{
'Exafunction/codeium.vim',
event = 'BufEnter'
}
🔌 vim-plug
Plug 'Exafunction/codeium.vim', { 'branch': 'main' }
📦 Vundle
Plugin 'Exafunction/codeium.vim'
📦 packer.nvim:
use 'Exafunction/codeium.vim'
💪 手动安装
🖥️ Vim
运行以下命令。在Windows上,你可以将~/.vim
替换为
$HOME/vimfiles
:
git clone https://github.com/Exafunction/codeium.vim ~/.vim/pack/Exafunction/start/codeium.vim
💻 Neovim
运行以下命令。在Windows上,你可以将~/.config
替换为
$HOME/AppData/Local
:
git clone https://github.com/Exafunction/codeium.vim ~/.config/nvim/pack/Exafunction/start/codeium.vim