標準的な HTML <textarea> に Vim キーバインドを付与する軽量プラグイン。構文ハイライトが不要なシンプルなユースケースに最適です。
インストール
npm install @vimee/core @vimee/plugin-textarea
使い方
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),
});
// 後でクリーンアップ
vim.destroy();
API
attach(textarea, options?)
| オプション | 型 | デフォルト | 説明 |
|--------|------|---------|-------------|
| readOnly | boolean | false | 編集を無効にする |
| onChange | (value: string) => void | — | コンテンツ変更コールバック |
| onModeChange | (mode: VimMode) => void | — | モード変更コールバック |
| onYank | (text: string) => void | — | ヤンクコールバック |
| onSave | (value: string) => void | — | 保存コールバック |
| onAction | (action: VimAction, key: string) => void | — | アクションコールバック |
| indentStyle | "space" \| "tab" | "space" | インデント文字 |
| indentWidth | number | 2 | インデント幅 |
戻り値: VimTextarea
| メソッド | 戻り値 | 説明 |
|--------|--------|-------------|
| .getMode() | VimMode | 現在の Vim モード |
| .getCursor() | CursorPosition | カーソル位置(0ベース) |
| .getContent() | string | バッファコンテンツ |
| .destroy() | void | Vim キーバインドを削除 |