若干間延びしている感じがあるので、しばらくLPIC101に集中して一旦終わらせたいと思います。
エディタと言えばLinuxに限らずいろいろな派閥がありますが、Linuxでは主要なエディタとして「vi」があります。
viは標準エディタとして存在する場合が多く、最近のディストリビューションでは、viは改良されたvimとして搭載されていることが多いです。
個人的なお話ですが、私はviより先にvimを知りました。
viエディタ
viエディタはWindowsなどのエディタとは勝手が違うため、最初は使い方に戸惑うことも多いです。
しかしその使用方法はキーボードのみでスムーズに操作できるように設計されているため、使い方をしっかり覚えることで便利に使用することができます。
使ったことがない人は空で覚えるのはなかなかきついので、ある程度の操作は実際に触って覚えた方が確実かと思います。
実際に使い慣れている人が使い方をどの程度熟知しているのかはわからないですが、試験的には結構多くのコマンドやらなにやらがでてくるため、普段使用できる場合でもよく確認しておいた方がいいかもしれません。
モード
viにはいくつかのモードがあり、モード次第でできることが変わってきます。
主要なモードには以下が存在します。
※もしかしたら他の呼び方もあるかもしれません
・ノーマルモード
viを開くと通常はこのノーマルモードから始まります。
ノーマルモードは他のモードの起点となり、カーソルの移動やヤンクなどの特定の操作などを行えます。
・入力モード
入力モードは編集モードとも言われることがある、実際にファイルに内容を編集を行うモードです。
・ビジュアルモード
行の選択などを行うモード、試験的な重要度はあまり高くないと思われる。
実際に使用する場合にも、完全にキーボードで操作したい人向きで、このモードを使わなくてもファイルの編集などは十分にできる。
・コマンドラインモード
入力以外にviのコマンドを実行する際に切り替えるモード。
ここで扱うのは終了や検索などの基本的な操作。
この辺のモードの切り替えも試験の範囲になってきます。
■ノーマルモードと入力モードの切り替え
試験的に重要になるポイントの一つ。
実践的には「i」と「Esc」だけでもなんとか乗り切れる。
いくつか種類があるのをLPICで知った。覚えていた方がよりスムーズに使えるようになると思う。
以下はノーマル⇒入力モードへの切り替え方法。
| コマンド | 説明 |
|---|---|
| i | カーソルの前から入力する |
| I | 行頭の先頭から入力する |
| a | カーソルの後から入力する |
| A | 行末から入力する |
| o | 下の行に空白行を挿入し、その行から入力する |
| O | 上の行に空白行を挿入し、その行から入力する |
多分文字だけみてもいまいちわからないので、実際に試して確認した方が早い。
以下は例。「な」にカーソルをあてた状態で各切り替えコマンドを打つと、アルファベットが入力されている位置から入力が開始される。
完全に使いこなせるようになればカーソル移動の手間が省け入力スピードが上がる。

「o」と「O」については小文字大文字の規則を後述するカットヤンクなどと同時に覚えれば効率は良い。
なお、入力モードに限らずだが他のモードからノーマルモードに戻るには「Esc」キーを使う。
カーソル移動コマンド
ノーマルモードでは矢印キーでのカーソル移動ももちろんできるが、移動用のコマンドが用意されている。
通常矢印キーはホームポジションの位置から少し離れているため、その移動の手間を省くためという設計思想らしい。
実際のところは、慣れないとスムーズに扱うのはかなり難しいと思っている。
試験的には出たらサービス問題の部類なので、しっかり押さえておきたいところ。
| コマンド | 説明 |
|---|---|
| h | カーソルを左に移動 |
| j | カーソルを下に移動 |
| k | カーソルを上に移動 |
| l | カーソルを右に移動 |
| 0 | カーソルを行頭へ(ゼロ) |
| $ | カーソルを行末へ |
| H | 画面の最上行へ |
| L | 画面の最下行へ |
| gg | ファイルの先頭行へ |
| G | ファイルの最下行へ |
| nG | n行目へ |
| :n | n行目へ |
「H」や「L」の画面というのは現在表示されている範囲内でという意味、ファイル自体の最上行、最下行とよく区別して覚える。
ノーマルモードでの編集
入力モードではWindowsのエディタと近い感じでの編集もできますが、ノーマルモードでもコピーペースト様の操作ができます。
実践的にも一部の操作は入力モードに切り替えて編集するよりもはるかに早くできることがあります。
| コマンド | 説明 |
|---|---|
| x | カーソル位置の文字を削除(Delete) |
| X | カーソルの手前の文字を削除(BackSpace) |
| dd | カレント行を削除 |
| dw | カーソル位置の単語を削除 |
| yy | カレント行をバッファにコピー |
| p | カレント行の下に貼り付け |
| P | カレント行の上に貼り付け |
貼り付けは入力モードの「o」による切り替えと感覚が似ている。
削除の「dd」は実際には「切り取り」の操作に近く、削除した内容はバッファ内に保存されているため、その後貼り付けることができる。
コマンドラインモードでの操作
場合にはよって、コマンドラインモードと呼ばれず単にコマンドの一種として扱われている場合もあるようですが、ここでは「:」から始める操作をコマンドラインモードと呼びます。
終了、保存コマンド
| コマンド | 説明 |
|---|---|
| :q | 保存せず終了 |
| :q! | 保存せず強制終了 |
| :wq | 保存して終了 |
| :x | 保存して終了 |
| ZZ | 保存して終了 |
| :w | 上書き保存 |
| :r [ファイル名] | ファイルの内容を読み込む |
| :! [コマンド] | viを終了せずにセルコマンドを実行 |
保存して終了は実践的には「:wq」などの基本パターンを一つ覚えればいいが、試験的には様々な実行方法を覚えておきたい。
「:r」や「:!」は今回の学習で初めて知りましたが、試験的には出る可能性があるので同じく使ったことがない場合には覚えておいた方がよいです。
■vi操作中に他のファイルを読み込む
例えば以下のような流れが考えられます。
・viでファイルを編集中にシェルコマンドを実行する

・コマンドの実行結果から読み込むファイルを確認する


・ファイルを読み込む


設定系コマンド
コマンドでviに設定できるものを試験範囲内で確認します。
| コマンド | 説明 |
|---|---|
| :set nu | 行番号を表示する |
| :set number | :set nuと同じ |
| :set nonu | 行番号を非表示 |
| :set nonumber | :set nonuとおなじ |
| :set ts=[数値] | タブ幅を指定する |
・行番号を表示

viの検索コマンド
ノーマルモードでは当該ファイル内のキーワードを検索することができます。
実践でのファイル編集の際にも数百行のファイルからキーワードを探す場合などで使う場合があり、またlessコマンドなども似た感じで使用できるため試験に関係なく覚えておいて損はないところだと思います。
| コマンド | 説明 |
|---|---|
| /[パターン] | カーソルから後方に検索 |
| ?[パターン] | カーソルから前方に検索 |
| n | 次の検索候補に移る |
| N | 次の検索候補に移る |

ーーーーーーーーーーーーーーーー
・前回(第十四回)
www.wantanblog.com
・次回(第十六回)
www.wantanblog.com