助け合いフォーラム

LinuC

LinuC Lv1-101(Ver10.0)
問題ID : 34711
問題を開く
viエディタのコマンドモードで以下のテキストを編集している。
1行目行末のAにカーソルがあるとき、全行の「#(シャープ)と次の空白」を削除するキー操作は次のうちどれか。

正解

^xxj^xx

解説

viには「コマンドモード」と「入力モード(挿入モード)」があり、コマンドモードではファイルの保存やカーソル移動をキーボード入力により行います。

以下はカーソルおよび画面操作に関する主なviコマンドをまとめたものです。


また、以下はファイルの編集に関する主なviコマンドをまとめたものです。


上表を利用しながら、選択肢を1つずつ確認します。

・^xxj^xx
【 各操作 】
^ → スペース(空白文字)を除く先頭の文字へ移動
x → 1文字削除
j → 1文字下へ移動
【 操作全体 】
まず行の先頭文字に移動し、2文字(#(シャープ)と次の空白)を削除します。そして1文字下に移動した後、また同じ操作を行います。
したがってこの選択肢は正解です。

・^Xh^X
【 各操作 】
^ → スペース(空白文字)を除く先頭の文字へ移動
X → カーソル位置の左を1文字削除
h → 1文字左へ移動
【 操作全体 】
まず行の先頭文字に移動し、カーソルの左の文字(行頭の空白)を削除します。そしてその後の移動や左文字削除は、既にカーソル位置が左端かつ非空白文字であるため、何も起こりません。
したがってこの選択肢は、1行目の削除内容が間違っており、また、2行目で削除を行っていませんので、誤りです。

・0lddj
【 各操作 】
0 → 行の先頭へ移動
l → 1文字右へ移動
dd → 1行削除
j → 1文字下へ移動
【 操作全体 】
まず行頭に移動し、1文字右にカーソル移動し、行を削除します。そしてその後の1行下への移動は、既にカーソル位置が最下行であるため実行されません。
この選択肢は行ごと削除しているため誤りです。
なお、行を削除すると、以降の全行の表示位置が繰りあがります。今回の場合、1行目が消え、これまで1行目が表示されていた場所に2行目が移動します。カーソル位置は新しい行の先頭文字になります。
ddのdはdelete(削除)という意味からきています。

・0lyyj0yy
【 各操作 】
0 → 行の先頭へ移動
l → 1文字右へ移動
yy → 1行コピー
j → 1文字下へ移動
【 操作全体 】
まず行頭に移動し、1文字右にカーソル移動し、行をコピーします。そして1文字下に移動した後、また行をコピーします。
この選択肢では削除を行っていないので誤りです。
yyはy(1文字コピー)の強化版と捉えると覚えやすいです。yはyank(引き抜く、コピーする)という意味からきています。

以上より正解は
・^xxj^xx
です。

「^」はスペース(空白文字)を除く先頭の文字へ移動します。
「0(ゼロ)」の場合はスペースがあっても行の先頭へ移動します。

参考

viはLinuxで標準的に使用されているテキストエディタです。viを起動するには以下のようにします。

vi [-R] [ファイル名]

「-R」オプションを指定すると指定したファイルを読み取り専用で開きます。
また、ファイル名を指定しない場合は空のファイルが開き、保存する時にファイル名を付けます。

viには以下の2つの動作モードがあります。

・コマンドモード
コマンドモードではカーソルの移動やテキストのコピー&ペースト、ファイルの保存などを行うことができます。



viの起動直後はコマンドモードになっています。なお、入力モードからコマンドモードへ移行するにはEscキーを押下します。

・入力モード
入力モードではテキスト本文の編集を行うことができます。



コマンドモードから入力モードへ移行するには以下のようなviコマンドを使用します。

上に戻る

問題文で「2つ選択」しあるが、正解が一つしかない。

公開日 2023/07/24

Linuc Lv1 101
問題ID 34711

タイトルの通り、問題文の最後に2つ選択とあるが
正解ボタンを押しても正解が一つしか出てきません。

スタッフからの返信

s staff_ueda

2023/07/27 10:17

shifu_totto 様 ご指摘の点を修正いたしました。 ご報告いただきまして、誠にありがとうございます。

この投稿に対して返信しませんか?