Vim のテキスト編集 〜基礎編〜
Vim はカーソル移動やテキストの挿入以外に、一般的なテキストエディターで言うところのカット、コピー、ペーストといったテキスト編集のためのコマンドも充実しています。
テキスト編集のためのコマンドは、オペレーターと対象テキスト指定とを組み合わせることで様々な応用が出来る様になっています。最初は少しむずかしいのですが、慣れるとテキストのいろいろな部位を手軽に素早く切り貼り出来るようになります。
オペレーター
他のコマンドと組み合わせて利用できる、テキスト編集のためのコマンドを「オペレーター」といいます。
特に重要なのは下の3つのオペレーターです。
オペレーター | 編集機能 | 備考 | 覚え方 |
---|---|---|---|
y | コピー ヤンク |
Vim ではコピーの事をヤンクといいます。対象のテキストが、レジスタに格納されます。 | yank, copy |
d | 削除 切り取り |
Vim では削除と切り取りが同じコマンドになっており、削除と同時に、削除したテキストがレジスタ(クリップボードのようなもの)に格納されて、貼り付け(Put)できるようになります。 | delete |
c | 変更 | オペレーター c を使うと、テキストを削除して、その場所からインサートモードを開始してテキストを挿入することが出来ます。 d(削除) と i(挿入) の組み合わせに近いのですが、c (変更)を使うと、後で . (ピリオド)コマンドで2つをまとめて繰り返すことが出来ます。 |
change |
行全体をコピー、削除、変更
上のオペレーターを2回繰り返して入力すると行全体を対象にすることが出来ます。
コマンド | 編集機能 |
---|---|
yy | 行全体をコピー |
dd | 行全体を削除、切り取り |
cc | 行全体を変更 |
カーソルから行末までを削除、変更
オペレーターを大文字にして入力すると、カーソルから行末までを削除、変更することが出来ます。
コピー(ヤンク)に限ってはこの通りではありません。これは vi との互換性維持のためだそうですが、カスタマイズして他のオペレーターに合わせることも出来ます。
コマンド | 編集機能 |
---|---|
Y | 行全体をコピー (カーソルから行末までのコピーではないので注意!) |
D | カーソルから行末までを削除、切り取り |
C | カーソルから行末までを変更 |
移動コマンドでオペレーターの影響範囲を指定する
オペレーターに続けて、カーソル移動コマンドを入力することで、その移動する分をオペレーターの影響範囲とすることが出来ます。
コマンド組み合わせ例 | 結果 |
---|---|
ce | カーソル位置から単語の末尾までを変更 |
dj | カーソル行とその次の行を削除 |
ct" | カーソル位置から同じ行の " の手前までを変更 |
ビジュアルモードでオペレーターの影響範囲を指定する
先にビジュアルモードでテキストを選択してから、オペレーターを実行することも出来ます。
テキストオブジェクトでオペレーターの影響範囲を指定する
オペレーターコマンドの後にテキストオブジェクトを指定することも出来ます。
コマンド組み合わせ例 | 結果 |
---|---|
ciw | カーソル位置にある単語を変更 |
daw | カーソル位置にある単語を削除 |
da' | '〜'で囲まれた文字列全体を削除 |
cit | HTMLタグの内側を変更 |
yi( | 括弧の内側をコピー(ヤンク) |
コピー、削除したテキストを貼り付ける(Put)
Vim では、テキストの貼り付けをペーストではなくて、Put といいます。コピー、削除、変更した対象のテキストを別の場所に貼り付けるには、そこに移動して、Put します。
コマンド | 編集機能 |
---|---|
p | カーソルの後ろに貼り付け |
P | カーソルの前に貼り付け |
Vim は、コピーや削除されたテキストを記憶する際に、行単位で行われたか、文字単位で行われたかも覚えています。
文字単位でコピー、削除したものは、カーソルの直前もしくは直後に貼り付けられて、行単位でコピー削除したものは、カーソル行の直前、もしくは直後に貼り付けられます。