Compatible with Neovim Config #63858
awesomearjun
started this conversation in
Feature Requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
What are you proposing?
Allow Zed to load and run an existing Neovim Lua configuration, with the goal of making commonly used Neovim configuration APIs work natively within Zed.
The goal would not necessarily be to run a full Neovim instance inside Zed, but rather to provide a compatibility layer that maps Neovim's Lua APIs to Zed's own editor functionality.
For example, an existing configuration containing:
could be loaded directly by Zed.
Why does this matter?
People can spend a huge amount of time building and refining their Neovim configuration, including keybindings, plugins, themes, and workflows.
Speaking from personal experience, someone might still switch away from Neovim to Zed because they prefer Zed's workflow, performance, or integration with their existing development environment.
Being able to bring an existing Neovim configuration with them would make that transition significantly easier.
It could also be a major selling point for Zed: users wouldn't necessarily have to abandon years of customization just because they want to use a different editor.
Are there any examples or context?
I don't have a working implementation yet. The main example would be taking an existing init.lua and progressively making its functionality work inside Zed.
Possible approach
Lua itself should make this relatively feasible to integrate with Zed's Rust code. The larger challenge would be implementing a compatibility layer for the parts of the Neovim API that configurations and plugins rely on.
A possible architecture could be:
Neovim init.lua
↓
Lua runtime
↓
Neovim compatibility API
↓
Zed APIs / editor internals
The initial implementation could focus on commonly used configuration APIs such as vim.opt, vim.g, vim.keymap, and parts of vim.api, then expand compatibility based on real-world configurations.
The more difficult part would be plugin compatibility, since many Neovim plugins depend heavily on Neovim-specific APIs. Themes and other runtime components would likely require separate consideration as well.
I'd be interested in hearing whether this is something the Zed project would be open to before attempting an implementation.
All reactions