Quick start

git clone https://github.com/saberzero1/motions.git
cd motions
npm install
npm run dev    # watch mode — rebuilds on file changes

Copy main.js, manifest.json, and styles.css to <vault>/.obsidian/plugins/vim-motions/ and reload Obsidian.

Commands

CommandDescription
npm run devDevelopment build (watch mode)
npm run buildProduction build
npm run lintESLint with obsidianmd plugin rules
npm run test:e2eE2E tests (requires nix develop)
npm run test:coverageCommand-level test coverage report
npm run test:neovim-smokeNeovim client smoke test
npm run test:neovim-recordRecord golden files from Neovim

Architecture

See architecture for the dual-vim architecture, module structure, and design patterns.

Picker provider API

See picker-api for how external plugins can register custom picker sources via window.VimMotions.picker.

Full development guide

The comprehensive development guide — including testing strategy, Neovim golden comparison infrastructure, file conventions, and contribution guidelines — is maintained in AGENTS.md in the repository root.

codemirror-vim fork

Core vim behavior changes go in the codemirror-vim fork at ~/Repos/codemirror-vim. The fork has its own test suite (1628 browser tests) and Neovim golden comparison infrastructure. See the fork’s README for development instructions.

Dependency URL

The @replit/codemirror-vim dependency in package.json must point to https://github.com/saberzero1/codemirror-vim.git (the remote URL) before committing. During local development, use npm install ~/Repos/codemirror-vim for fast iteration, but always switch back to the HTTPS URL before committing.

2 items under this folder.