Vim の編集コマンドは、多くの場合、演算子と移動コマンドまたはテキストオブジェクトを組み合わせます。この文法により、同じ操作を文字、単語、行、さらに大きな範囲へ適用できます。練習前に Esc を押してノーマルモードへ戻ってください。
高度なテキスト操作 · レッスン 7
Vim 編集
Vim で演算子、移動、レジスター、プット、取り消しコマンドを組み合わせてテキストを編集する方法を学びます。
演算子と移動を組み合わせる
一般的な形式は次のとおりです。
[count] operator [count] motion
一般的な演算子には次のものがあります。
d:テキストを削除するc:テキストを変更し、挿入モードへ入るy:テキストをヤンク、つまりコピーする
たとえば dw は w の移動範囲を削除し、d$ はカーソルから行末までを削除します。2dw は削除を 2 回分の単語移動に適用します。
ノーマルモードで d$ は何をしますか?
文字と行を編集する
便利な短縮コマンドがあります。
x:カーソル下の文字を削除するdd:現在行を行単位で削除する3dd:現在行から 3 行を削除するcc:現在行を変更し、挿入モードへ入るr{char}:カーソル下の文字を{char}で置き換えるR:Escを押すまで置換モードに入る
dd のように演算子を繰り返すと、行単位の操作になります。回数を付けると対象行数が増えます。
現在行とその次の 2 行を削除するノーマルモードのコマンドはどれですか?
テキストを変更して挿入モードへ入る
c 演算子は選択したテキストを削除し、置き換えを入力できるよう挿入モードへ入ります。
ce:単語の末尾までを変更するc$:行末までを変更するcc:現在行全体を変更するciw:カーソル下の内側の単語を変更するcaw:Vim が定義する周囲の空白を含め、単語のテキストオブジェクトを変更する
cw の動作には歴史的な特殊例があり、多くの場合 ce のように動作します。iw などのテキストオブジェクトを使うと、意図した境界を明確にできます。
カーソル下の内側の単語を削除し、挿入モードへ入って置き換えるノーマルモードのコマンドはどれですか?
テキストをヤンクしてプットする
Vim ではコピーをヤンク、貼り付けをプットと呼びます。
yw:単語移動の範囲をヤンクするyy:現在行をヤンクするp:文字単位のテキストならカーソルの後、行単位なら現在行の下へプットするP:カーソルの前、または現在行の上へプットする
削除や変更でもテキストがレジスターへ保存されるため、後で p を使うと、以前にヤンクしたテキストではなく直近に削除したテキストが置かれることがあります。名前付きレジスターで特定のテキストを保持できますが、まずは直近の操作が何を保存したかを意識してください。
yy で現在行をヤンクした後、その行を現在行の下へ置くコマンドはどれですか?
取り消し、やり直し、繰り返し
ノーマルモードでは次を使います。
u:直近の変更を取り消すCtrl+R:取り消した変更をやり直す.:適用可能な場合、現在位置で直近の変更を繰り返すJ:現在行と次の行を結合する
取り消し履歴が対象にするのはバッファーの変更であり、単なるカーソル移動ではありません。無制限または永続的な取り消し履歴に頼らず、保存のチェックポイントを作り、編集内容を確認してください。
取り消したばかりの変更をやり直すノーマルモードのコマンドはどれですか?
使い捨てのテキストで演算子、移動、復旧を練習するには、次のハンズオンラボを利用してください。
- **Vim と Nano で Linux のテキストファイルを編集する**:vi/vim と nano で、ファイル作成、編集、保存、移動を練習し、削除、変更、ヤンク、プットを実際の場面に適用します。
レッスン完了
Vim 編集 を完了しました
これで、Vim の編集を組み立て、ノーマルモードでミスから復旧できるようになりました。
演算子を移動、テキストオブジェクト、回数と組み合わせる。
選んだ範囲の文字または完全な行を削除する。
テキストを変更し、置き換え用の挿入モードへ入る。
文字単位または行単位のテキストをヤンクしてプットする。
意図的に変更を取り消す、やり直す、繰り返す。