【第三回Vim入門】オペレータとモーション
今回は仕組みの話
第一回・第二回は、手を動かして覚える操作の話でしたが、今回はノーマルモードの命令がどう組み立てられているかを整理したいと思います。
dw や cw といったコマンドを丸覚えするのではなく、それらを分解して読めるようになることがゴールです。
オペレータとモーション
| 役割 | 呼び方 | 意味 |
|---|---|---|
| 何をするか | オペレータ | 削除・変更・コピーなど |
| どこまでか | モーション | 単語・行・段落など |
つまり 「オペレータ + モーション = ひとつの命令」 です。
d(delete=削除)と w(word=単語)を続けると dw になります。「削除」+「次の単語のまとまりまで」という一つの命令です。キーが二つ並んでいるのは、たまたまではなく、この組み立て方の結果です。
同じ要領で c(change=変更)と w を組み合わせた cw は、「その単語を変える」命令です。d は消すだけ、c は消したあとインサートモードに入る、という違いだけ覚えておけば十分です。
d を押したあと、何が起きているか
d だけ押しても、すぐには何も消えません。Vim は次のキーを待っています。続けて w を押すと、範囲が決まって初めて削除が走ります。
だから同じ d に、あとから付けるモーションを変えるだけで、消す幅を変えられます。
| 入力 | 分解(略) | 読み方 |
|---|---|---|
dw |
delete + word | 削除 + 次の単語のまとまりまで |
d$ |
delete + 行末($) |
削除 + 行末まで |
dd |
delete + 行(d) |
削除 + 行全体 |
d のあとに Esc を押しても、範囲が決まっていなければ何も起きないことがあります。オペレータだけでは命令が完結していないからですね。
第二回の w は、実は同じ部品
第二回で紹介した w(word)や b(backward)は、単体ではカーソルを動かすキーでした。これがモーションです。第一回の h j k l も同じく、移動の部品です(こちらはキー配列の位置を表す名前で、英単語の略ではありません)。
よく使うモーションの略は次のとおりです。
| キー | 略 | 意味 |
|---|---|---|
w |
word | 次の単語のまとまりへ |
b |
backward | 前の単語のまとまりへ |
$ |
(行末) | 行の末尾へ |
ここが少し面白いところで、w は文脈によって役割が変わります。
| 入力 | 分解(略) | 何をするか |
|---|---|---|
w |
word | カーソルを進める(読むときの移動) |
dw |
delete + word | その手前までを削除する(進めるだけではない) |
同じ w です。オペレータが前に付くかどうかで、「移動」か「どこまでか」の指定かが切り替わります。Vim のキーが少なく感じられるのは、この部品の使い回しがあるからです。
最低限覚えておけば良いオペレータ
| キー | 意味 |
|---|---|
d |
削除 |
c |
変更(削除してからインサートへ) |
y |
コピー(yank) |
どれも形は同じで、オペレータのあとにモーションを続けます。
| 形 | 例 |
|---|---|
| オペレータ + モーション | dw、cw、yw |
| 数字 + オペレータ + モーション | 3dw(3単語分) |
3dw のように先頭に数字を付けると、量を指定できます。第二回の 43G と同じで、数字は「何回分・どこまで」の修飾に使われる、というイメージですね。
とにかく試してみよう
ここまでの内容で、コマンドは自分で組み立てられる、ということをご理解いただけたと思います。
オペレータとモーションを組み合わせて、他にはどんなことができるか試してみてください。コマンドを丸覚えするより、自分で考えて試したものは忘れにくいですし、手によく馴染んでくると思います。ここまでくると、Vimが楽しくなってきたのではないでしょうか。
株式会社オートプロジェクトでは、中小企業向けのシステム・アプリケーション開発 / 外注サービスを提供しております。
貴社のニーズに応じた柔軟なサポートを行いますので、ぜひお気軽にご相談ください。

EC用公式アカウント