LinuCレベル1 GNUとUnixのコマンド 問40
GNUとUnixのコマンド/エディタを使った基本的なファイル編集の実行viエディタのコマンドモードで、カーソルのある行と同じ内容の行をすぐ下に複製したい。操作として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)
- Add を入力した後に p を入力する
- Byy を入力した後に p を入力する
- Cyw を入力した後に p を入力する
- Dx を入力した後に p を入力する
正解:B
解説
vi の yy はカーソル行をバッファにコピー(ヤンク)し、p はバッファの内容をカーソルの後ろ(行単位ならカーソル行の下)に貼り付けます。したがって yy に続けて p を入力すると、同じ行がすぐ下に複製されます。P(大文字)ならカーソル行の上に貼り付けます。dd も削除した行をバッファに入れるため、dd の後の p は行の移動(入れ替え)になります。
選択肢ごとの解説
- A誤り。dd で行を削除してから p で貼り付けるため、行が1行下に移動する(次の行と入れ替わる)だけで、複製にはなりません。
- B正しい。yy で行をヤンクし、p でカーソル行の下に貼り付けるので、同じ行が複製されます。
- C誤り。yw はカーソル位置から次の単語の先頭の直前まで(単語とその後ろの空白)をコピーする操作で、行全体は複製されません。
- D誤り。x はカーソル位置の1文字を削除する操作で、続けて p を入力すると文字が入れ替わるだけです。