codeium.vim
codeium.vim copied to clipboard
Free, ultrafast Copilot alternative for Vim and Neovim
codeium.vim
Free, ultrafast Copilot alternative for Vim and Neovim
Codeium autocompletes your code with AI in all major IDEs. We launched this implementation of the Codeium plugin for Vim and Neovim to bring this modern coding superpower to more developers. Check out our playground if you want to quickly try out Codeium online.
Contributions are welcome! Feel free to submit pull requests and issues related to the plugin.

🚀 Getting started
-
Install
Exafunction/codeium.vimusing your vim plugin manager of choice, or manually. See Installation Options below. -
Run
:Codeium Authto set up the plugin and start using Codeium.
You can run :help codeium for a full list of commands and configuration
options, or see this guide for a quick tutorial on how to use Codeium.
🛠️ Configuration
For a full list of configuration options you can run :help codeium.
A few of the most popular options are highlighted below.
⌨️ Keybindings
Codeium provides the following functions to control suggestions:
| Action | Function | Default Binding |
|---|---|---|
| Clear current suggestion | codeium#Clear() |
<C-]> |
| Next suggestion | codeium#CycleCompletions(1) |
<M-]> |
| Previous suggestion | codeium#CycleCompletions(-1) |
<M-[> |
| Insert suggestion | codeium#Accept() |
<Tab> |
| Manually trigger suggestion | codeium#Complete() |
<M-Bslash> |
Codeium's default keybindings can be disabled by setting
let g:codeium_disable_bindings = 1
or in Neovim:
vim.g.codeium_disable_bindings = 1
If you'd like to just disable the <Tab> binding, you can alternatively
use the g:codeium_no_map_tab option.
If you'd like to bind the actions above to different keys, this might look something like the following in 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>
Or in Neovim (using wbthomason/packer.nvim or folke/lazy.nvim):
-- Remove the `use` here if you're using folke/lazy.nvim.
use {
'Exafunction/codeium.vim',
config = function ()
-- Change '<C-g>' here to any keycode you like.
vim.keymap.set('i', '<C-g>', function () return vim.fn['codeium#Accept']() end, { expr = true })
vim.keymap.set('i', '<c-;>', function() return vim.fn['codeium#CycleCompletions'](1) end, { expr = true })
vim.keymap.set('i', '<c-,>', function() return vim.fn['codeium#CycleCompletions'](-1) end, { expr = true })
vim.keymap.set('i', '<c-x>', function() return vim.fn['codeium#Clear']() end, { expr = true })
end
}
(Make sure that you ran :Codeium Auth after installation.)
⛔ Disabling Codeium
Codeium can be disabled for particular filetypes by setting the
g:codeium_filetypes variable in your vim config file (vimrc/init.vim):
let g:codeium_filetypes = {
\ "bash": v:false,
\ "typescript": v:true,
\ }
Codeium is enabled by default for most filetypes.
You can also disable codeium by default with the g:codeium_enabled
variable:
let g:codeium_enabled = v:false
Instead, if you would like to just disable the automatic triggering of completions:
let g:codeium_manual = v:true
Show Codeium status in statusline
Codeium status can be generated by calling codeium#GetStatusString() function.
It produce 3 char long string with status:
'3/8'- third suggestion out of 8'0'- Codeium returned no suggestions'*'- waiting for Codeium response
In normal mode, status shows if Codeium is enabled or disabled by showing
'ON' or 'OFF'.
In order to show it in status line add following line to your .vimrc:
set statusline+=\{…\}%3{codeium#GetStatusString()}
Shorter variant without Codeium logo:
set statusline+=%3{codeium#GetStatusString()}
Please check :help statusline for further information about building statusline in VIM.
For vim-airline extension you can use following config:
let g:airline_section_y = '{…}%3{codeium#GetStatusString()}'
💾 Installation Options
🔌 vim-plug
Plug 'Exafunction/codeium.vim'
📦 Vundle
Plugin 'Exafunction/codeium.vim'
📦 packer.nvim:
use 'Exafunction/codeium.vim'
💪 Manual
🖥️ Vim
Run the following. On windows, you can replace ~/.vim with
$HOME/vimfiles:
git clone https://github.com/Exafunction/codeium.vim ~/.vim/pack/Exafunction/start/codeium.vim
💻 Neovim
Run the following. On windows, you can replace ~/.config with
$HOME/AppData/Local:
git clone https://github.com/Exafunction/codeium.vim ~/.config/nvim/pack/Exafunction/start/codeium.vim