Rust · modal editing · no plugin manager

ctrlvim

A text editor built from scratch in Rust, modeled after Neovim's editing model — with the conveniences a plugin ecosystem gives Neovim built in, instead of bolted on.

$ curl -fsSL https://ctrluserknown.github.io/ctrlvim/install.sh | sh
Why

Neovim's plugin conveniences, built in rather than bolted on

Harpoon-style file pinning, Telescope-style pickers, and the rest of what a Lua plugin ecosystem gives Neovim are native here instead — so there's no plugin manager, no version drift between updates, and no startup cost from loading a dozen scripts.

Modal editing that just works

Normal, Insert, Visual and Command-line modes, with real motions, operators and text objects — 2d3w deletes six words, the way Vim’s does.

{}

TOML configuration

config.toml declares options, per-mode keymaps, autocommands and plugins. No config script to write.

<C-x>

A real mapping layer

<C-x>, <A-x>, <C-S-x>, arrows, F-keys and <S-Tab> are all bindable, in Normal, Insert and Visual mode.

?

Discoverable keys

Every mapping carries a desc. Hold a chord and a which-key popup lists what can follow it — ? shows the whole table.

λ

Lua plugins

vim.api, vim.fn, vim.keymap, vim.treesitter and friends via mlua — the API surface real Neovim plugins already run against.

/re/

A real Vim regex engine

Written from scratch rather than translated onto a general-purpose engine: backreferences, lookaround, \zs/\ze, all four magic levels.

#

Tree-sitter highlighting

Syntax-aware parsing and code navigation, driving live syntax highlighting in the editor.

Find & replace, project-wide

<leader>S opens a live panel: every match grouped by file, a before/after diff, y / Y to accept one or all.

Configuration

Declare it in TOML, extend it in Lua

Options, per-mode keymaps, autocommands, user commands and plugins all live in one config.toml — no config script to write. Anything that needs real logic lives in a Lua plugin the config refers to by name.

Read the configuration reference →

config.toml[ui]
theme = "Tokyo Night"

[options]
number = true
ignorecase = true

[[keymap]]
lhs = "<leader>f"
rhs = ":Files<CR>"
desc = "fuzzy file browser"   # shown by `?`

Try it in a few minutes

There are no prebuilt binaries yet — every install path builds from source, and the installer does the rest.

Installation guide Browse the docs