Vimのオペレーターとモーションについて勉強したのでメモ。
オペレーターとモーションの説明はこちらの記事が分かりやすかった。合わせてこちらの記事も読むと更に理解が深まると思う。
オペレーターとモーションについて
ノーマルモード中にdwという操作を行うとカーソル下の単語を削除することができるが、このdwのうちのdがオペレーターで、wがモーションとなる。モーションは単体で使うとカーソル移動となるが、オペレーターと一緒に使うと、現在のカーソル位置から移動後のカーソル位置に対して変更などを行うことができる。
Vimの:help motionも読んでおくと理解の助けになる。
オペレーターの一覧
| オペレーター | 機能 | 備考 | 覚え方 |
|---|---|---|---|
| y | ヤンク | Vimではコピーの事をヤンクと言う。対象のテキストがレジスタに格納される。 | yank |
| d | 削除 切り取り | Vimでは削除と切り取りが同じコマンドになっており、削除と同時に、削除したテキストがレジスタ(クリップボードのようなもの)に格納されて、貼り付け(Put)できるようになる。 | delete |
| c | 変更 | cを使うと、テキストを削除して、その場所からインサートモードを開始してテキストを挿入することが出来る。 d(削除)とi(挿入)の組み合わせに近いが、c(変更)を使うと、後で.(ピリオド)コマンドで2つをまとめて繰り返すことが出来ます。 | change |
| g | カーソルの移動 | gを使うと、カーソルの移動を行うことが出来る。モーションによって移動位置が変わる。 | go |
実用的なオペレーターとモーションの組み合わせ
| コマンド | 説明 |
|---|---|
| dw | カーソルの乗っている単語を削除する。 |
| cw | カーソルの乗っている単語を削除して挿入モードに入る。 |
| yw | カーソルの乗っている単語をヤンクする。 |
| gUw | ノーマルモードの状態で入力する。カーソルの乗っている単語を大文字(Upper Case)に変更する。 |
| guw | ノーマルモードの状態で入力する。カーソル上の単語を小文字に変更する。 |
| gv | ノーマルモードの状態で入力する。直前にビジュアルモードで選択していた範囲を選択し直す。 |
| g; | ノーマルモードの状態で入力する。直前に編集した箇所にカーソルを移動する。 |
覚えておきたい実践的なコンボ
置換検索をするには:%s/foo/bar/gcが一般的だが、もっと簡単に置換検索する方法があった。
- /fooでfooを検索する。(fooにカーソルを合わせて*でも検索可能)
- cwbarでfooをbarに変更する。
- nで検索の次の候補にカーソルを移動する。
- .で前回の変更を繰り返す。
以降、n.n.n.n.と打ち込んでいくこと置換検索が可能である。
参考
今更聞けないvimの話
Vim のテキスト編集 〜基礎編〜