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.

Inputkeystroke + state
ProcessorprocessKeystroke()
OutputnewState + VimAction[]
cursor-movecontent-changemode-changeyanksavestatus-message

Packages

@vimee/coreHeadless engine@vimee/reactReact hooks@vimee/shiki-editorDrop-in editor@vimee/plugin-textareaTextarea@vimee/plugin-monacoMonaco@vimee/plugin-codemirrorCodeMirror@vimee/testkitTest kit

Community

Built in the open. MIT licensed.