日本語

@vimee/plugin-textarea

Attach Vim keybindings to any HTML textarea

A lightweight plugin that attaches Vim keybindings to a standard HTML <textarea>. Ideal for simple use cases where syntax highlighting is not needed.

Installation

npm install @vimee/core @vimee/plugin-textarea

Usage

import { attach } from "@vimee/plugin-textarea";

const textarea = document.querySelector("textarea")!;

const vim = attach(textarea, {
  onChange: (value) => console.log("Content:", value),
  onModeChange: (mode) => console.log("Mode:", mode),
});

// Later: clean up
vim.destroy();

API

attach(textarea, options?)

| Option | Type | Default | Description | |--------|------|---------|-------------| | readOnly | boolean | false | Disable editing | | onChange | (value: string) => void | — | Content change callback | | onModeChange | (mode: VimMode) => void | — | Mode change callback | | onYank | (text: string) => void | — | Yank callback | | onSave | (value: string) => void | — | Save callback | | onAction | (action: VimAction, key: string) => void | — | Action callback | | indentStyle | "space" \| "tab" | "space" | Indent character | | indentWidth | number | 2 | Indent width |

Return: VimTextarea

| Method | Return | Description | |--------|--------|-------------| | .getMode() | VimMode | Current Vim mode | | .getCursor() | CursorPosition | Cursor position (0-based) | | .getContent() | string | Buffer content | | .destroy() | void | Remove Vim keybindings |