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.と打ち込んでいくこと置換検索が可能である。