r/madeinrust • u/Agreeable_Flounder58 • 1h ago
AI Assisted Nevi: a vim-style terminal editor in Rust that stays fast on big files, with LSP and tree-sitter built in
Hey all, I've been building Nevi for about a year and wanted to share it.
Some background. I love Neovim and used it every day, but my config grew to around 70 plugins, and on big projects it started to hurt. Startup got slow, grep would sometimes freeze, and opening a really large file could lock things up for several seconds. On my setup a 183 MB log took 7 to 10 seconds to show anything. That's my plugins, not Neovim itself, but I didn't want to keep tuning a config to fix it. So I started building the editor I wanted: vim keys, with LSP, tree-sitter, a fuzzy finder and live grep built into the binary, so there's nothing to set up.
The video shows what I mean:
Starts in the rust-lang/rust repo in under 10ms
Opens a 183 MB log with 2 million lines in about 0.2s, and
Gjumps to the last line in about 0.04sLive grep across about 18k files, then a normal
ci"editA rust-analyzer hover in Nevi's own source (rust-analyzer was already indexed, so that part is the server's speed, not Nevi's)
How it's built, for the Rust folks:
Buffers are ropes (ropey), and rendering only touches the rows on screen. That's most of why a 2M-line file opens and jumps instantly. Tree-sitter highlighting backs off on very large files instead of trying to parse everything.
Live grep uses ripgrep's own crates (
grep-searcher,grep-regex,ignore), and the fuzzy finder uses nucleo, the matcher from Helix. No external rg or fzf needed.The terminal UI is plain crossterm. The floating terminal is
portable-ptyplusalacritty_terminal, and git signs come fromgit2.All the vim behavior lives in one input state machine, and the parity tests run the same keystrokes through a headless nvim and compare the results.
Where it's at right now:
372 keybinds, and 206 of them are checked against real Neovim on every CI run. If Nevi does something different from nvim, the test fails.
LSP for 14 languages, auto-detected on your PATH, with an install hint if a server is missing.
File explorer, floating terminal, lazygit, Copilot ghost text and 17 themes.
macOS and Linux. Windows isn't supported yet.
brew install anthonyamaro15/nevi/nevi
# or
cargo install --git https://github.com/anthonyamaro15/neviRepo: https://github.com/anthonyamaro15/nevi
It's still early, so I'd really like to know which vim keys you use that are missing or don't behave right. Open an issue or just tell me here.



