Vimのオペレーターとモーションについて

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が一般的だが、もっと簡単に置換検索する方法があった。

  1. /fooでfooを検索する。(fooにカーソルを合わせて*でも検索可能)
  2. cwbarでfooをbarに変更する。
  3. nで検索の次の候補にカーソルを移動する。
  4. .で前回の変更を繰り返す。

以降、n.n.n.n.と打ち込んでいくこと置換検索が可能である。

参考
今更聞けないvimの話
Vim のテキスト編集 〜基礎編〜