vimee の React バインディング。シームレスな統合のための useVim フックを提供します。
インストール
npm install @vimee/core @vimee/react
useVim
React コンポーネントに vimee を統合するための主要フック:
import { useVim } from "@vimee/react";
function Editor() {
const { content, cursor, mode, handleKeyDown } = useVim({
content: "Hello, vimee!",
});
return (
<div onKeyDown={handleKeyDown} tabIndex={0}>
<pre>{content}</pre>
<div>Mode: {mode} | Cursor: {cursor.line}:{cursor.col}</div>
</div>
);
}
オプション
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
content |
string |
(必須) | 初期エディターコンテンツ |
cursorPosition |
string |
"1:1" |
初期カーソル位置(1ベース、"line:col") |
readOnly |
boolean |
false |
編集を無効にする |
onChange |
(content: string) => void |
— | コンテンツ変更時に呼ばれる |
onYank |
(text: string) => void |
— | ヤンク時に呼ばれる |
onSave |
(content: string) => void |
— | :w 時に呼ばれる |
onModeChange |
(mode: VimMode) => void |
— | モード変更時に呼ばれる |
onAction |
(action: VimAction, key: string) => void |
— | すべてのアクションで呼ばれる |
indentStyle |
"space" | "tab" |
"space" |
インデント文字 |
indentWidth |
number |
2 |
インデント幅 |
keybinds |
KeybindEntry[] |
— | カスタムキーバインド |
commands |
CommandEntry[] |
— | カスタム ex コマンド |
戻り値
| フィールド | 型 | 説明 |
|---|---|---|
content |
string |
現在のバッファコンテンツ |
cursor |
CursorPosition |
現在のカーソル位置(0ベース) |
mode |
VimMode |
現在の Vim モード |
statusMessage |
string |
ステータスバーメッセージ |
statusError |
boolean |
ステータスがエラーかどうか |
visualAnchor |
CursorPosition | null |
ビジュアルモードのアンカー |
commandLine |
string |
入力中の Ex コマンド |
handleKeyDown |
(e: React.KeyboardEvent) => void |
onKeyDown にアタッチ |
handleScroll |
(direction, visibleLines, amount?) => void |
スクロールハンドラー |
updateViewport |
(topLine, height) => void |
ビューポート同期 |