zudo-codemirror

Type to search...

to open search from anywhere

コマンドとモーション

作成2026年3月29日更新2026年3月29日Takeshi Takatsudo

@replit/codemirror-vim でサポートされる Vim コマンド、モーション、オペレーター、テキストオブジェクトのリファレンス。

コマンドとモーション

このページでは、@replit/codemirror-vim がサポートする Vim コマンドとモーションの一覧を掲載しています。コアな Vim の動作とほぼ同等のカバレッジですが、一部のあまり使われない機能は未実装の場合があります。

モーションコマンド

モーションはテキストを変更せずにカーソルを移動します。オペレーターの後に使用すると、操作対象のテキスト範囲を定義できます。

文字・単語モーション

キーモーション
h
j
k
l
w次の単語の先頭
b前の単語の先頭
e現在/次の単語の末尾
W次の WORD の先頭(空白区切り)
B前の WORD の先頭
E現在/次の WORD の末尾

行モーション

キーモーション
0行の最初のカラム
^行の最初の非空白文字
$行末
ggドキュメントの先頭行
Gドキュメントの最終行(カウント指定で N 行目)

検索モーション

キーモーション
f{char}行内で次の {char} の位置
F{char}行内で前の {char} の位置
t{char}行内で次の {char} の直前
T{char}行内で前の {char} の直後
;最後の f/F/t/T モーションを繰り返し
,最後の f/F/t/T を逆方向に繰り返し

その他のモーション

キーモーション
%対応する括弧(丸括弧/角括弧/波括弧)へ移動
{前の空行(段落の境界)
}次の空行(段落の境界)

オペレーターコマンド

オペレーターは、後続のモーションまたはテキストオブジェクトで定義された範囲に対して操作を行います。

キーオペレーター
d削除
c変更(削除して Insert モードに入る)
yヤンク(コピー)
>右にインデント
<左にインデント
=自動インデント
gqテキストの整形/折り返し

オペレーター + モーションの組み合わせ

オペレーターとモーションを組み合わせて、カーソルからモーションの移動先までのテキストに操作を適用します。

dw      delete from cursor to start of next word
d$      delete from cursor to end of line
d0      delete from cursor to start of line
cw      change word
cb      change back one word
yy      yank entire line (operator doubled = act on line)
dd      delete entire line
>>      indent current line
<<      unindent current line
gqq     format current line

オペレーター + テキストオブジェクトの組み合わせ

テキストオブジェクトは構造化されたテキスト領域を定義します。オペレーターと組み合わせることで、精密な編集が可能になります。

diw     delete inner word
daw     delete a word (including surrounding space)
ci"     change inside double quotes
ca"     change around double quotes (including the quotes)
di(     delete inside parentheses
da(     delete around parentheses
ci{     change inside curly braces
da{     delete around curly braces
dit     delete inside HTML/XML tag
dat     delete around HTML/XML tag

テキストオブジェクト

テキストオブジェクトは、オペレーターの後や Visual モードで領域を選択するために使用します。

テキストオブジェクト説明
iw単語の内側
aw単語全体(周囲の空白を含む)
i"ダブルクォートの内側
a"ダブルクォートの外側(引用符を含む)
i'シングルクォートの内側
a'シングルクォートの外側
i`バッククォートの内側
a`バッククォートの外側
i( または ib丸括弧の内側
a( または ab丸括弧の外側
i{ または iB波括弧の内側
a{ または aB波括弧の外側
i[角括弧の内側
a[角括弧の外側
itHTML/XML タグの内側
atHTML/XML タグの外側

Insert モードコマンド

Normal モードから Insert モードに遷移するコマンドです。それぞれ異なる位置に挿入ポイントを設定します。

キーアクション
iカーソルの前に挿入
aカーソルの後に挿入
I行頭に挿入
A行末に挿入
o下に新しい行を開いて挿入
O上に新しい行を開いて挿入
s文字を置換(1文字削除して Insert モードに入る)
S行を置換(行の内容を削除して Insert モードに入る)
C行末まで変更

Esc または Ctrl-[ を押すと Insert モードから Normal モードに戻ります。

Visual モードコマンド

キーアクション
v文字単位の Visual モードに入る
V行単位の Visual モードに入る
Ctrl-vブロック(矩形)Visual モードに入る
o選択範囲の反対側にカーソルを移動(Visual モード中)
gv前回の Visual 選択を再選択

Visual モードでは、モーションを使って選択範囲を拡張し、オペレーター(dcy><)を適用して選択テキストに操作を行います。

検索

キーアクション
/前方検索
?後方検索
n同じ方向に最後の検索を繰り返し
N逆方向に最後の検索を繰り返し
*カーソル下の単語を前方検索
#カーソル下の単語を後方検索

検索には正規表現が使えます。Enter で検索を実行し、Esc でキャンセルします。

マーク

マークはカーソル位置を保存し、後からジャンプして戻ることができます。

キーアクション
m{a-z}現在の位置にマーク {a-z} を設定
'{a-z}マーク {a-z} の行にジャンプ
`{a-z}マーク {a-z} の正確な位置にジャンプ

📝 Note

@replit/codemirror-vim のマークはバッファローカルです。グローバルマーク(大文字 A-Z)のサポートは限定的な場合があります。

レジスタ

レジスタは、ヤンクや削除されたテキストを保存する名前付きの記憶領域です。

キーレジスタ
"{a-z}名前付きレジスタ(オペレーターやヤンクの前に指定)
"0ヤンクレジスタ(最後のヤンク)
"1"9番号付き削除レジスタ
"+システムクリップボードレジスタ
"*システム選択レジスタ

レジスタを使用するには、ヤンク、削除、プットコマンドの前に " に続けてレジスタ名を入力します。

"ayy    yank current line into register a
"ap     put (paste) from register a
"+yy    yank current line to system clipboard
"+p     paste from system clipboard

💡 Tip

クリップボードレジスタをシステムクリップボードと実際に同期させる方法については、クリップボード統合のページを参照してください。

マクロ

マクロはキーストロークの列を記録し、再生します。

キーアクション
q{a-z}レジスタ {a-z} への記録を開始
q記録を停止(記録中に押下)
@{a-z}レジスタ {a-z} のマクロを再生
@@最後に実行したマクロを再生

マクロにはカウントを前置できます。10@a はレジスタ a のマクロを10回再生します。

リピート

キーアクション
.最後の変更コマンドを繰り返し

ドットコマンドは、最後の編集操作(挿入、削除、変更など)を、操作に含まれていたモーションやテキストオブジェクトも含めて繰り返します。

アンドゥとリドゥ

キーアクション
uアンドゥ
Ctrl-rリドゥ

カウントプレフィックス

ほとんどのコマンドは、コマンドを繰り返すか動作を変更する数値プレフィックスを受け付けます。

5j      move down 5 lines
3dw     delete 3 words
10@a    replay macro a 10 times
4>>     indent 4 lines

カウントはオペレーターやモーションの前に入力します。オペレーターコマンドの場合、モーションのカウントと乗算されます。例えば 2d3w は6単語を削除します。

Revision History