# 第三章 GNUとUnixのコマンド
練習問題3.8
viエディタでテキストファイルを編集しています。現在のカーソルの置かれている行から8行を削除したい場合の操作を選択してください。現在はコマンドモードになっています。
A. 「dd」と入力すると行数を尋ねてくるので「8」と入力する
B. 「d8」と入力する
C. CtrlキーとDキーを8回押す
D. 「8dd」と入力する
E. 「8yy」と入力する
(解答)D
(解説)
コマンドモードでは、コマンドの前に数理を入力することにより、その子コマンドの適用回数を指定できます。正解は選択肢Dです。ここでは行削除「dd」の前に数値「8」を入力しているので、カレント行から8行が削除されています。
viには「入力モード」と「コマンドモード」の二種類がある。入力モードでEscキーを押すとコマンドモードに切り替わる
- viの入力モード
- i
カーソルの前にテキストを入力する - a
カーソルの後にテキストを入力する - I
行頭の最初の文字にカーソルを移動し、その直前にテキストを入力する - A
行末にカーソルを移動し、その直後にテキストを入力する - o
カレント行の下に空白行を挿入し、その行でテキストを入力する - O
カレント行の上に空白行を挿入し、その行でテキストを入力する
- viのカーソル操作
- h
1文字左へ移動する。左矢印(←)キーと同じ - l
1文字右へ移動する。右やじるし(→)キーと同じ - k
1行上へ移動する。上矢印(↑)キーと同じ - j
1行下へ移動する。下矢印(↓)キーと同じ - O
行の先頭へ移動する - $
行の末尾へ移動する - H
画面の一番上の行頭へ移動する - L
画面の一番下の行頭へ移動する - gg
ファイルの戦闘業へ移動する - G
ファイルの採集業へ移動する - nG
ファイルのn行目に移動する - :n
ファイルのn行目に移動する
- viの終了、ファイルの保存、シェルコマンドの実行
- :q
ファイルへ保存せずに終了する(編集した場合は保存するかどうかを確認してくる。 - :q!
編集中の内容を保存せずに終了する - :wq
編集中の内容を保存して終了する - ZZ
編集中の内容を保存して終了する(:wqと同じ) - :w
編集中の内容でファイルを上書き保存する - :e!
最後に保存した内容に復帰する - :r ファイル名
ファイルの内容をカレント行以降に読み込む - :!コマンド
viを終了せずにシェルコマンドを実行する - :r!コマンド
シェルコマンドの実行結果を挿入する
- viの編集コマンド
- x
カーソル位置の文字を削除する(Delete) - X
カーソル位置の手前の文字を削除する(backspace) - dd
カレント行を削除する - dw
カーソル位置から次の単語までを削除する - yy
カレント行をバッファにコピーする - p
カレント行の下にバッファの内容を貼り付ける - P
カレント行の上にバッファの内容を貼り付ける - r
カーソル位置の1文字を置換すr