github/copilot.vim: GitHub Copilot inside Vim and Neovim
Neovim plugin for GitHub Copilot
At a glance
- What is it?
- A Vim script plugin that puts Copilot's inline suggestions behind the tab key in Vim and Neovim. It needs a Copilot subscription and Node.js, and the README leaves rollback and model selection undocumented.
- Who is it for?
- Adopt copilot.vim if you already pay for GitHub Copilot and want suggestions without leaving Vim or Neovim. Skip it if you cannot install Node.js on the machine, if you have no Copilot subscription, or if you need chat inside the editor: the README describes inline suggestions and points to :help copilot, and says nothing about a chat command.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 94 days ago.
- What is it written in?
- Mainly Vim Script, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- github/copilot.vim11,710 ★ · +28
| Repository | 2026-09-22 | 2026-11-13 |
|---|---|---|
| github/copilot.vim | 11.7k | 11.7k |
28 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What copilot.vim actually solves
Copilot's suggestions normally live in an editor that ships with its own extension host. copilot.vim is the version of that feature for people who never left Vim. The README describes it plainly: "Copilot.vim is a Vim/Neovim plugin for GitHub Copilot," and suggestions are displayed inline and accepted with the tab key.
The audience is narrow and specific. You need an active GitHub Copilot subscription, either a personal one signed up through the Copilot settings page or one granted by an enterprise admin. You need Vim at patch 9.0.0185 or newer, or Neovim. You need Node.js installed, and the README notes that if you use a package manager you should install NPM as well, giving `apt install nodejs npm` on Debian and Ubuntu as the example. That is three prerequisites before the plugin does anything.
What you get back is a single interaction: type, see grey inline text, press tab. There is no suggestion panel, no diff view, no separate chat buffer described in the README. If your reason for wanting Copilot in Vim is that you dislike switching windows, this is the whole product. If your reason is that you want to converse with a model about a file, the README does not promise that.
How the plugin is put together
The repository layout tells you most of the architecture. There is an `autoload/` directory, which in Vim script is where functions live that are loaded on first call rather than at startup. There is a `plugin/` directory for the entry point that registers commands and mappings. There is a `lua/` directory, which exists because Neovim embeds Lua and the plugin needs Neovim-specific code paths. There is `doc/` for the help file the README points at with `:help copilot`. And there is `copilot-language-server/`, a directory that sits alongside the Vim script.
That last entry is the part worth understanding. The plugin is not a pure Vim script client that talks to a remote HTTP endpoint. It carries a language server, and the Node.js prerequisite exists to run it. The README's second step, installing Node.js, is not incidental housekeeping; it is the runtime for the component in `copilot-language-server/`.
The `syntax/` directory suggests the plugin also ships syntax definitions. The `release` default branch is unusual for a GitHub project and worth noting: the branch you clone by default is named `release`, not `main` or `master`.
Installing copilot.vim and accepting your first suggestion
The README gives four manual clone commands, one per platform and editor combination, plus the option of a plugin manager such as vim-plug or lazy.nvim. The manual route is the one with no ambiguity, because you can see exactly where the files land. For Neovim on Linux or macOS, the command creates the package directory structure that Neovim scans at startup:
git clone --depth=1 https://github.com/github/copilot.vim.git \
~/.config/nvim/pack/github/start/copilot.vimFor Vim on Linux or macOS, the same clone goes to a different path, `~/.vim/pack/github/start/copilot.vim`. Windows users get PowerShell variants that write under `$HOME/vimfiles/` for Vim and `$HOME/AppData/Local/nvim/` for Neovim. The `--depth=1` flag keeps the clone shallow, which matters little for a plugin of this size but is what the README specifies.
Once the files are in place, start the editor and run the setup command:
:Copilot setupAccording to the README, this is the last getting-started step. After that, open a file in a language you write regularly, start typing, and wait. The README states that suggestions appear inline and that the tab key accepts them. If nothing appears, the first thing to check is whether Node.js is installed and on the path the editor sees.
Where copilot.vim stops being the right tool
The most concrete limitation is the dependency chain. Vim 9.0.0185 or newer, Neovim, Node.js, NPM if your package manager splits them, and a Copilot subscription (Copilot Free is an option). On a locked-down server where you cannot install a Node runtime, the plugin is simply unavailable, and no amount of Vim configuration changes that. This is not a plugin you can vendor into a minimal container image without also shipping Node.js.
The second limitation is documentation scope. The README is short. It covers access, installation, setup and a pointer to `:help copilot`. It does not document how to change which model produces suggestions, how to disable suggestions for a specific file type, how to revert to a previous plugin version, or what happens when the language server crashes mid-session. Those behaviours may well exist in the help file or in the `autoload/` code, but the README does not describe them, and a reader deciding whether to adopt the plugin should treat that silence as work they will have to do themselves.
A third case: if your workflow depends on chat-style interaction with a model, reading a diff, or asking questions about a selection, the README describes none of it. The plugin's stated surface is inline suggestions and the tab key. Choosing it for a conversational workflow means choosing a tool whose documented scope does not include that.
copilot.vim against the Lua-based alternatives
The natural comparison, and one people search for directly, is copilot.vim against a Lua-native Copilot client for Neovim. The difference is not cosmetic. copilot.vim is written in Vim script with a `lua/` directory for the Neovim-specific pieces, and it bundles a language server under `copilot-language-server/`. A Lua-native client typically integrates with Neovim's own APIs more directly, which tends to mean configuration expressed as Lua tables in your `init.lua` rather than as Vim script settings, and completion sources that plug into the completion framework you already use.
The practical consequence is about where your configuration lives. If your Neovim setup is already a Lua program, adding a Vim script plugin means two configuration languages in one config tree. That is not fatal, and Vim script plugins work fine inside Lua-configured Neovim, but it is friction. The other consequence is the Node.js requirement. The README makes Node.js mandatory for copilot.vim because of the bundled language server. A client that talks to a different backend may or may not have the same requirement, and that is the first thing to check before switching.
What copilot.vim has that a Neovim-only client does not is Vim support. The README's install instructions cover Vim on Linux, macOS and Windows alongside the Neovim paths. If you use both editors, or you use Vim rather than Neovim, the field narrows considerably.
Licence, maintenance and what an upgrade costs you
The repository's licence is reported as NOASSERTION, which means the licence could not be identified automatically from the repository metadata. A `LICENSE.md` file exists at the top level, so the terms are written down, but the machine-readable classification is absent. Read `LICENSE.md` yourself before shipping the plugin inside a product or a corporate image. This is not legal advice, and the licence text is the only authority.
On maintenance, the last push to the repository was on 2026-08-11. That is recent enough that the project is not abandoned, but the README documents no versioning scheme, and the only listed release is neovim-nightlies from 2021-10-22. Upgrades therefore look like re-cloning or letting your plugin manager pull the `release` branch. Because the default branch is `release` rather than a development branch, the code you get by cloning is presumably the code the maintainers intend users to run, which reduces the chance of pulling something half-finished.
The cost of upgrading is the cost of re-running `:Copilot setup` if authentication state does not survive, plus whatever time it takes to notice that suggestion behaviour changed. The README does not document a rollback procedure or a pinned-version install, so if you need reproducibility across a team, you will be pinning a commit hash yourself in your plugin manager configuration rather than relying on documented guidance.
Editorial conclusion
Adopt copilot.vim if you already pay for GitHub Copilot and want suggestions without leaving Vim or Neovim. Skip it if you cannot install Node.js on the machine, if you have no Copilot subscription, or if you need chat inside the editor: the README describes inline suggestions and points to :help copilot, and says nothing about a chat command. Before rolling it out, run :Copilot setup on one machine and confirm the Node.js binary the plugin finds is the one you expect.
Frequently asked questions
Is there a Vim plugin for GitHub Copilot?
Yes. github/copilot.vim is the plugin, described in its README as "a Vim/Neovim plugin for GitHub Copilot." It requires Vim 9.0.0185 or newer or Neovim, Node.js, and an active Copilot subscription.
How do I use GitHub Copilot in Vim?
Install Node.js and the plugin, then run :Copilot setup in Vim or Neovim. After that, suggestions are displayed inline and you accept them by pressing the tab key.
Does copilot.vim work in Neovim as well as Vim?
Yes. The README gives separate install paths for Vim and Neovim on Linux, macOS and Windows, and the repository contains a lua/ directory alongside its Vim script code.
What do I need before installing copilot.vim?
An active GitHub Copilot subscription, Vim at patch 9.0.0185 or newer or Neovim, and Node.js. The README adds that if you use a package manager you should install NPM too, giving apt install nodejs npm on Debian and Ubuntu.
Can I use copilot.vim without a GitHub Copilot subscription?
No. The README states that an active GitHub Copilot subscription is required, either through GitHub Copilot Free or through access requested from an enterprise admin.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/github-copilot-vim)Star history chart for your README
[](https://hysenlabs.com/projects/github-copilot-vim)Was this useful?