Install and set up the GitLab plugin for Neovim
Prerequisites:
- For both GitLab.com and GitLab Self-Managed, you have GitLab version 16.1 or later.
While many extension features might work with earlier versions, they are unsupported.
- The GitLab Duo Code Suggestions feature requires GitLab version 16.8 or later.
- You have Neovim version 0.9 or later.
To install the extension, follow the installation steps for your chosen plugin manager:
Run this command to include this project with
packadd
on startup:
git clone https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim.git ~/.local/share/nvim/site/pack/gitlab/start/gitlab.vim
Add this plugin to your lazy.nvim configuration:
{
'https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim.git',
-- Activate when a file is created/opened
event = { 'BufReadPre', 'BufNewFile' },
-- Activate when a supported filetype is open
ft = { 'go', 'javascript', 'python', 'ruby' },
cond = function()
-- Only activate if token is present in environment variable.
-- Remove this line to use the interactive workflow.
return vim.env.GITLAB_TOKEN ~= nil and vim.env.GITLAB_TOKEN ~= ''
end,
opts = {
statusline = {
-- Hook into the built-in statusline to indicate the status
-- of the GitLab Duo Code Suggestions integration
enabled = true,
},
},
}
Declare the plugin in your packer.nvim configuration:
use {
"git@gitlab.com:gitlab-org/editor-extensions/gitlab.vim.git",
}
Authenticate with GitLab
To connect this extension to your GitLab account, configure your environment variables:
Environment variable | Default | Description |
---|---|---|
GITLAB_TOKEN | not applicable | The default GitLab personal access token to use for authenticated requests. If provided, skips interactive authentication. |
GITLAB_VIM_URL | https://gitlab.com | Override the GitLab instance to connect with. Defaults to https://gitlab.com . |
A full list of environment variables is available in the extension’s help text at
doc/gitlab.txt
.
Configure the extension
To configure this extension:
Configure your desired file types. For example, because this plugin supports Ruby, it adds a
FileType ruby
auto-command. To configure this behavior for more file types, add more file types to thecode_suggestions.auto_filetypes
setup option:require('gitlab').setup({ statusline = { enabled = false }, code_suggestions = { # For the full list of default languages, see the 'auto_filetypes' array in # https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim/-/blob/main/lua/gitlab/config/defaults.lua auto_filetypes = { 'ruby', 'javascript' }, -- Default is { 'ruby' } } })
Configure Omni Completion to set up the key mapping to trigger Code Suggestions.
Optional. Configure
<Plug>
key mappings.Optional. Set up helptags using
:helptags ALL
for access to:help gitlab.txt
.
Configure Omni Completion
To enable Omni Completion with Code Suggestions:
Create a personal access token with the
api
scope.Install the Code Suggestions language server.
Optional. Consider configuring Omni Completion’s dialog even for a single suggestion:
vim.o.completeopt = 'menu,menuone'
When working in a supported file type, open the Omni Completion menu by pressing Ctrl+x then Ctrl+o.
Uninstall the extension
To uninstall the extension, remove this plugin and any language server binaries with these commands:
rm -r ~/.local/share/nvim/site/pack/gitlab/start/gitlab.vim
rm ~/.local/share/nvim/gitlab-code-suggestions-language-server-*
Docs
Edit this page to fix an error or add an improvement in a merge request.
Create an issue to suggest an improvement to this page.
Product
Create an issue if there's something you don't like about this feature.
Propose functionality by submitting a feature request.
Feature availability and product trials
View pricing to see all GitLab tiers and features, or to upgrade.
Try GitLab for free with access to all features for 30 days.
Get help
If you didn't find what you were looking for, search the docs.
If you want help with something specific and could use community support, post on the GitLab forum.
For problems setting up or using this feature (depending on your GitLab subscription).
Request support