GitHub - posix4e/minivim

1 min read Original article ↗

minivim

A tiny, plugin-driven Vim-like editor in Rust. Core behavior is implemented as plugins.

Run

cargo run -- path/to/file.txt

Modes

  • Normal: move and issue commands
  • Insert: type text
  • Command: run ex-style commands

Keys

Normal mode:

  • h j k l or arrows: move
  • 0 / $: line start/end
  • i: enter insert mode
  • :: enter command mode
  • x: delete char under cursor
  • Esc: return to normal mode

Insert mode:

  • Type to insert
  • Enter: new line
  • Backspace: delete
  • Tab: insert four spaces
  • Arrows: move
  • Esc: return to normal mode

Command mode:

  • :w write
  • :w filename write to a new file
  • :q quit (fails if dirty)
  • :q! quit without saving
  • :wq or :x write and quit

Plugins

Core structures live in src/editor.rs. Basic behavior is provided by plugins in src/plugins.rs (modes, motion, editing, commands, rendering, syntect-based syntax highlighting).

Development

  • Enable the pre-commit hook: ./scripts/install-hooks.sh
  • Hook runs: cargo clippy --all-targets -- -D warnings

Tests

  • Run all tests: cargo test
  • E2E tests run on Unix only (PTY-based).

Documentation

  • Build local docs: cargo doc --no-deps