viをサクサクと使えることはLinuxサーバエンジニアにとって必須技術のひとつだろう。
このページではviの操作方法の練習問題をご紹介してみた。
目次
viの使い方
viの使い方については下記でまとまっている。使い方がわからない方はまずこちらをご確認いただくのが良いだろう。
viの操作方法練習問題
以下の練習問題を実践してみよう。
- viを起動してみる
- viを終了してみる
- 挿入モードにし、適当に文字列(例abc123)を打ってみる
- ノーマルモードへ移行する
- 「abc」を「aaa」に置換する
- ノーマルモードで一文字削除する
- ファイルを「testfile」として保存してみる
- ノーマルモードでコマンドを叩き右へ移動してみる
- ノーマルモードでコマンドを叩き左へ移動してみる
- ノーマルモードでコマンドを叩き下へ移動してみる
- ノーマルモードでコマンドを叩き上へ移動してみる
- ノーマルモードで一行ヤンク(コピー)し、その後任意の行でペーストする
- ノーマルモードでコマンドを叩き、一行切り取りしてみる。その後任意の行でペーストしてみる
- ノーマルモードでコマンドを叩き「Undo」を実行する
- ノーマルモードから「ヴィジュアルモード」へ移行する
- 行数を表示する
- 行数を非表示にする
解答
※ 画面が見にくく申し訳ありません。そのうち撮り直します
練習問題1 解答
端末上でviコマンドを発行すると、viエディタが立ち上がる。「vi <ファイル名>」とするとそのファイルのバッファを新規作成し起動するようになっている。
練習問題2 解答
「:」を押すと一番下にコマンドを受け付けるプロンプトが現れるので、そこで「q」としてEnterを押すとviが終了する。また編集内容を保存して終了したいときは「:wq」変更を破棄して終了したいときは「:q!」とする。
練習問題3 解答
ノーマルモードの状態で「i」を押すとその場で挿入モードへ移行する。そのあと適当な文字列を打ってみよう。文字列が書き込まれるはずだ。またノーマルモードの状態で「a」を押すとカーソルの一つあとに文字列を書き足すことが出来る。
練習問題4 解答
「いまどのモードにいるのか分からなくなった」「とりあえず動作をキャンセルしたい」といった場合は「Esc」キーを連打しよう。するとノーマルモードへ戻ってくる。そこから仕切り直すとよいだろう。何はともあれ迷ったらEscを連打しよう。
練習問題5 解答
「:$s/abc/aaa/g」とするとバッファの中にある「abc」が「aaa」に置き換わる。書式は「:$s/置換対象/置換後の文字列/g」となっている。
練習問題6 解答
ノーマルモードの状態で「x」を押すと一文字削除することが出来る。
この状態でカーソルを1 に合わせて「x」をおしてみると1が削除される。
練習問題7 解答
名前を指定せずにviを起動した場合、保存するときに名前を指定する必要がある。「:w <ファイル名>」とする。すでにファイル名を指定して起動している場合「:w」とすると上書き保存される。ほか「:wq」とすると上書き保存した後に終了する。
練習問題8 解答
デフォルトのカーソル位置を下記とする。
現在中央の「c」にカーソルがあるとする。この状態でノーマルモードで「l」を押してみよう、カーソルが「右」へ移動する。
練習問題9 解答
カーソル位置サンプルを基準としてノーマルモードで「h」を押すとカーソルは「左」へ移動する。
練習問題10 解答
カーソル位置サンプルを基準としてノーマルモードで「j」を押すとカーソルは「下」へ移動する。
練習問題11 解答
カーソル位置サンプルを基準としてノーマルモードで「k」を押すとカーソルは「上」へ移動する。
練習問題12 解答
一行目で「yy」として最後の行で「p」を押すと1行目が最後の行の下に、コピーペーストされたことがわかる。また「yy」を押す前に数字を指定するとその押した数字の行数だけヤンクされるようになっている。今回の例では一行目で「3yy」とするとすべての行をヤンクできる。
「3yy」とした例
練習問題13 解答
「dd」を押すと一行切り取りが出来る。今回は一行目を切り取って、最後の行のあとにペーストしてみる。「dd」を一行目で押すと一行目が切り取られたことがわかる。
この状態で一番下の行まで移動「p」を押してみる。内容が最後の行の後ろへペーストされた。
練習問題14 解答
ノーマルモードで「u」を押すと直前の動作を取り消してくれる。今の状態で「u」を押すと、問題12のペーストを取り消してくれる。
練習問題15 解答
ノーマルモードの状態で「v」を押すと「ヴィジュアルモード」へ移行する。このモードを使用すると任意の範囲を指定してコピーアンドペーストが可能になる。ヴィジュアルモードで一行目の「123」を指定する。
この状態でyとすると123がヤンクされる。任意の場所で「p」を押してみよう。ペーストが実行される。
練習問題16 解答
「:set number」とすると行数が表示される。
練習問題17 解答
逆に行数を非表示にしたい場合は「:set nonumber」とすると行数が非表示になる。
まとめ
このページではLinuxのviの練習問題をまとめてご紹介した。実際に手を動かすのがvi理解にもっとも手っ取り早い。参考にしていただき、実行いただければ幸いだ。