コマンドとモーション
@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[ | 角括弧の外側 |
it | HTML/XML タグの内側 |
at | HTML/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 モードでは、モーションを使って選択範囲を拡張し、オペレーター(d、c、y、>、<)を適用して選択テキストに操作を行います。
検索
| キー | アクション |
|---|---|
/ | 前方検索 |
? | 後方検索 |
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単語を削除します。