1.03.5基礎
viのノーマルモードで、削除したい行へカーソルを置いている。
行全体を1回の操作で削除する。
使用するコマンドはどれか。
× 不正解
ddは現在行全体を削除する。削除内容はレジスタへ入るため、pで貼り戻すこともできる。
詳細解説
誤り
yy現在行を削除せずヤンクする。
誤り。yyは行内容をレジスタへコピーするだけで、画面上の行を残す。
誤り
cc現在行を変更対象にして挿入モードへ入る。
誤り。行内容を変更する準備として消去するが挿入モードへ入り、単純な行削除とは結果と状態が異なる。
誤り
dwカーソル位置から語の範囲を削除する。
誤り。dにw移動を組み合わせて単語範囲だけを削除し、行全体は残す。
正しい
dd現在行全体を削除し、内容をレジスタへ格納する。
正しい。ddは行区切りを含む行単位の削除となり、後続行がその位置へ繰り上がる。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp); printf 'keep1\ndelete\nkeep2\n' >"$tmp"; vim -Nu NONE -n -es "$tmp" +'normal gg jdd' +wq; cat "$tmp"; rm -f "$tmp"期待される結果
keep1
keep2理解のポイント
- dは削除演算子
- ddは行単位
- 削除内容はレジスタへ入る
確認時の注意
- 確認環境: Vim 9.x互換のvi操作 / 一時ファイル
基礎のおさらい
演算子と移動
dやcは移動コマンドと組み合わせて範囲を決め、同じキーを重ねるddやccでは現在行を対象にする。
削除レジスタ
ddで削除した内容もレジスタに保存されるため、pで別位置へ移動する用途にも使える。
問題IDKL-101-499
確認環境Vim 9.x互換のvi操作 / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告