Upstream roadmap
Upstream archive: This is the Neovim roadmap inherited when this website was forked. Its release numbers, plans, and completed work refer to Neovim. See the Rustvim roadmap for this project’s direction.
This is a high-level overview of the project direction. Detailed plans and priorities are tracked in milestones (tentative, may be changed or dropped at any time).
- Version numbers (
0.1,0.2, …) track production releases. The next upcoming version has a (estimated) target date. - backlog holds low-priority items.
- needs-owner holds zero-priority items (no feasible path to completion).
Next
Future (unknown release)
- Prepare for 1.0
- Redesign
--remote - Redesign (simplify) remote plugin concept, eliminate
:UpdateRemotePlugins - Unified event interface,
nvim_on() - Multibuffer #30463
- Lua remote plugin host
- LSP:
vim.lsp.server() - UI protocol: window layout events, messages
- UI “block-level elements” so plugins can reason about regions
- UI “affordance” indicator so users know which elements they can interact with
0.13 “Batteries Included”
- ✅ Multicursor
- ✅ CmdAtom: subscribe to any user action
- ✅ Dot-repeat “just works” with any operator mapping (
operatorfunc,:omap). - ✅
vim.asynctask abstraction, structured concurrency #34473 - ✅ File-change detection (improved
'autoread') #37971 - ✅ Image API:
vim.ui.img - ✅
dir.luadirectory browser (replacesnetrw) #39723 - ✅ Reimplement
cmdwinas a normal buffer+window #40312 - Interactive
:!(:[range]terminal,:[range]write :term sudo tee %, …) #1496 - Packspec,
pkg.json - Remote-ssh
Completed
Here are the headline features of the previous releases; for details see the release notes.
0.12 “The year of Nvim OOTB”
- Plugin manager (
vim.pack) #34009 - No more “Press ENTER” #27855
- UI
:connect,:restart#5035 - Progress messages (demo)
- LSP: 11+ new capabilities,
:lspcommand, default mappings, improvedenable()andstop()behavior - API:
nvim_open_tabpage(), enhancednvim_open_win()+nvim_win_set_config() - Default statusline: diagnostics, progress-status
- Prompt-buffer enhancements: multiline input/paste, undo/redo
- Treesitter: incremental selection via
in/antextobjects
0.11
- Async tree-sitter (avoids blocking UI/input)
- LSP “config” concept:
vim.lsp.config#31031 - LSP: auto-completion (:help lsp-completion)
- LSP: multiclient support
- TUI: URL highlight, theme event
- UI
:detach#5035
0.10
- Default colorscheme
- LSP inlay hints
- TermRequest, TermResponse
- treesitter: builtin parsers for bash, markdown, python
vim.snippetvim.itervim.lpeg,vim.re,vim.glob,vim.base64
0.9
- TUI as a remote UI
- LSP semantic token highlighting
- EditorConfig support
- ’exrc’ and related “:trust database” features
- ‘statuscolumn’
- ‘diffopt’ “linematch” feature
- :Inspect, :InspectTree
- vim.loader optimized Lua module loader
- vim.version semver module
$NVIM_APPNAME- Lua script runner:
nvim -l
0.8
- LSP improvements (v3.16 spec coverage, configuration,
LspAttach) - Lua API:
vim.fs,vim.cmd{}, measure require() in--startuptime,:map/:command/:aucan print Lua source location - treesitter API: use queries to define spellcheck regions (aka “spellsitter”)
vim.ui_attach()- UI and RPC performance
- user-defined command preview
cmdheight=0- clickable statusline
0.7
- Tree-sitter integration (highlighting, folds)
- TUI: extended keys (CTRL-i vs TAB, SHIFT modifier, …!)
- Global statusline:
laststatus=3
0.6
- Unified diagnostics API
- Updated defaults
0.5 + 0.5.1
- Expanded Lua API and user config (
init.lua) - Built-in Language Server Protocol (LSP) support
- Tree-sitter integration (experimental)
- Decorations API improvements: extmarks, virtual text, highlights
- Lua API improvements
- LSP support improvements
0.4
- Lua “stdlib”
- Externalized UI: multigrid
- Externalized UI: floating windows
- Externalized UI: messages
0.3.x
- API: buffer update events
- Vimscript expression parser:
nvim_parse_expression() - Windows: MSVC support
- 0.2.1 Built-in Lua:
vim.api,:lua,nvim_execute_lua(), … - 0.2.1 Externalize UI components: cmdline, wildmenu
- 0.2.1 Windows
:terminal - 0.2.1 Pre-packaged “universal” binary for Linux
0.2.x
- Windows support
- Externalized UI: popumenu
- Externalized UI: tabline
- Pre-packaged builds for Windows and macOS
0.1.x
- First public release
- Publish a stable product that can be used as a benchmark for progress
What is Rustvim?
Rustvim is a Vim-based text editor whose implementation is being incrementally migrated to Rust, with an emphasis on compatibility and maintainability.
Participate
Follow development in the Rustvim repository and report bugs or request features.