vimee

vimee

Headless Vim Engine for the Web

Pure functions. Zero dependencies. Any framework.

What is vimee?

Pure Functions

Give it a keystroke and state, get back new state and actions

Zero Dependencies

Pure TypeScript. No runtime baggage. The core engine is just 2.8kB gzipped

Any Framework

Works with React, Vue, Svelte, and vanilla JS through thin wrappers

Live Demo

A real Vim editor. Right here in the browser.

Features

N I V

Six Editing Modes

Normal, Insert, Visual, Visual-Line, Visual-Block, Command-Line

hjkl

Rich Motions

w, b, e, 0, $, gg, G, f, t, /, ? and more

3dd

Operators & Counts

d, c, y, >, < combined with counts and motions

iw

Text Objects

iw, aw, i", a(, it and more

/

Search & Replace

/pattern, :s/old/new/g

q@

Macros & Marks

Record, playback, and named marks

Architecture

Everything is a pure function. No DOM access. No side effects.

Input keystroke + state
Processor processKeystroke()
Output newState + VimAction[]
cursor-move content-change mode-change yank save status-message

Packages

@vimee/core Headless engine @vimee/react React hooks @vimee/shiki-editor Drop-in editor @vimee/plugin-textarea Textarea @vimee/plugin-monaco Monaco @vimee/plugin-codemirror CodeMirror @vimee/testkit Test kit

Community

Built in the open. MIT licensed.