SSブログ

いきなりの難問で申し訳ないが…~viエディタに慣れてもらおう!~ [ファイル操作・管理]

 さて。
 ログインしてパスワード変更をしてログアウトする手順についてみてもらった、UNIX/Linux管理者のタマゴな人たちに、いきなり「vi」の説明をしなければならないのが心苦しいのだが(笑)、コレが使えないとどうしようもないので、思い切っていきなり最初に練習してしまおうと思うので、覚悟していただきたい。(笑)

 「vi」とは、テキストエディタである。UNIXの時代から続く古式ゆかしいエディタである。まあ、今でこそ他にもっと便利なエディタが使えるようになっているものの、サーバ障害などでにっちもさっちもいかなくなってしまった場合などでviしか使えない!!…というケースに陥ることもゼロではないので、最後の頼みの綱として活躍することもある。そんなことになって初めて慣れない「vi」で四苦八苦するよりも、できれば日常的に、少なくともUNIX/Linuxサーバの上では使い続けることで、習熟しておいたほうが良いのではないかと思う。

 と、前置きが長くなってしまったが、それでは「viエディタ」の使用方法について、解説しつつ練習してもらうことにする。

 コマンドは「vi」である。このコマンドに続けて、作成したいファイル名・編集したいファイル名を指定する。
 たとえば、「lesson1.txt」というファイル(今はまだ無い)を新しく作成する場合は…

 vi lesson1.txt

 と、コマンドを実行することとなる。
 このコマンドを実行すると、ターミナルソフトの画面が全体的に書き換わる。たとえば↓みたいな感じ。
20100115_vi新規.jpg 画面全体がエディタになる。一番下の行は、ステータスが表示されたり、エディタコマンドを入力するための領域として使用されたりする。サンプルで表示している画像では、ウィンドウの一番下に
 "lesson1.txt"
とか、
 [New File]
とか、表示されているのがわかる。この場合は読んで字のごとく、lesson1.txtという新しいファイルを編集(作成)してますよ…ということを意味しているのである。

 さて。Windowsに標準で添付されている「メモ帳」とか、利用者の多いことで名高い「秀丸エディタ」、私が個人的にイチオシする「TeraPad」などのような、GUI環境で動作するテキストエディタと決定的に異なるのが、「vi」には「モード」という概念が存在する。この、「モード」には大きく分けて
 1.コマンドモード
 2.エディットモード
の2つがあって、コマンドモードでは押したキーに応じてカーソルが移動したり、文字や行をコピーしたり削除したりペーストしたり、ファイルを保存したり文字の置換をしたり…といった振る舞いをする。一方エディットモードでは押したキーがそのままテキストデータとしてファイルの書き込まれることとなる。キー操作によってコマンドモードエディットモードとを切り替えながら使うのが、この「vi」の特徴であるといっても良いかもしれない。

 で、先ほど見てもらったviの画面では、エディタはコマンドモードになっている。このまま入力したい文字のキーを押したところで、文字は入力されない

 まずは簡単なところから紹介しよう。コマンドモードからエディットモードへモードを切り替えるコマンドから。

 コマンドモードで、キーボードの「i」を押す。すると、エディットモードに切り替わる。

20100115_vi挿入.jpg 先ほどまで、ファイル名が表示されていたターミナルの一番下の行が、「-- INSERT --」という表示になった。今
エディタのモードはエディットモードになっていることがこれで判る。今から押したキーはコマンドとして解釈されず、ファイルの中身として画面上に表示されるようになる。

 ためしに、「ABCXYZ」とでも入力してみようか。
20100115_vi挿入ABCXYZ.jpg このように、今度は入力したキーがそのまま画面に表示された。先ほどコマンドモードの時に入力した「i」は画面に表示されなかったことと比較してほしい。
 キーを入力し誤った場合などはBackSpaceキーで遠慮なく修正してもらいたい。なお、そのサーバ管理者が特に古風なその筋の人の場合、BackSpaceキーのかわりにDeleteキーを使うように設定されていることもあるので、そのあたりは驚かないように。サーバ管理者から説明があるかもしれないので、その場合はサーバ管理者の指示に従ってもらいたい。


 こんどは、エディットモードからコマンドモードに切り替える方法を説明する。こっちは非常に簡単で、単にキーボードの「Esc」キーを1回押せばよい。すると、ターミナルの一番下の行に表示されていた「-- INSERT --」の表示が消えることが判る。これでコマンドモードに戻ったのである。
 なお、この「Esc」キーをしてコマンドモードに戻る方法は、エディットモードからの復帰だけでなく、コマンドモードで何らかの長めのコマンドを入力している時にその入力をやめる際とかにも使える。「Esc」キーを押せば必ずコマンドモードになるので、操作中に訳がわからなくなったケース等では「Esc」キーをバシバシ叩いておけば、とりあえずコマンドモードに戻れるということを覚えておいてほしい。

 ちなみに、コマンドモードからエディットモードへモードを切り替えるコマンドとしてはキーボードの「a」を押す方法もある。キーボードの「a」キーを押してもキーボードの「i」キーを押したときと同様に、エディットモードになってターミナルの一番下の行に「-- INSERT --」という表示が出る。しかし両者には微妙な違いがあるので気をつけてほしい。

 例として、今入力した「ABCXYZ」という文字列の、「ABC」と「XYZ」との間に『DEF...UVW』という文字を挿入してみようと思う。
 コマンドモードになっている状態で、キーボードの「h」キー、またはカーソルキーの「←」キーを押して、カーソルを「x」の文字の上に移動する。
20100115_viXの上.jpg ←こんな感じになったら、ここでさきほど使ったキーボードの「i」キーでエディットモードにモードを切り替える。

20100115_viXの上でi.jpg ←こうしてエディットモードに切り替えるが、この状態でそのまま『DEF...UVW』と入力する。

20100115_viXの上でi2.jpg ←するとこのように文字が追加されるのである。

 では、「微妙に動作が異なる」という、キーボードの「a」キーだとどうなるか。
 さきほどと同じように、ABCXYZという文字列が表示されている状態でカーソルを「x」の上に移動したところから、キーボードの「a」キーを押してエディットモードに切り替えてそのまま『DEF...UVW』と入力すると…
20100115_viXの上でi3.jpg ←と、このようにDEF...が入力される位置が違うことが判る。


 つまり、
  i…カーソルのに挿入
  a…カーソルの後ろに挿入(というか追加…append)
 ということだと理解してもらうとよいだろう。

 文字の追加に続いて、文字の削除も押さえておこう。
 文字を削除するための一番基本的なコマンドは、コマンドモードで、キーボードの「x」キーを押す。1回押すと、今カーソルがある位置の文字が1文字削除される。
 先ほど、「ABCDEF...UVWXYZ」とした文字列を、再び「ABCXYZ」に戻してみよう。

 コマンドモードでカーソルを「D」の上に移動してから、キーボードの「x」キーを9回押すと…(面倒くさいのでスクリーンショットは省略)

 めでたく「ABCXYZ」に戻っていることだろう。

 ということで、文字の追加と文字の削除とが出来れば、必要最低限のことはどうにかなるので、しっかり覚えておいてほしい。

 で、アーティクルがずいぶんと長くなってしまったが、あとどうしても覚えておいて欲しいことが残っているので、それも一緒に説明する。

 viコマンドを終了させる方法だ。

 ファイルの編集が出来るようになっても、エディタが終了できなければ意味が無い。(笑)その方法を説明する。
操作は全てコマンドモードで行う。キーボードの「:」(コロン)キーを押すところからはじまる。
20100115_viXの上.jpg ←たとえば、この状態から「:」(コロン)キーを押すと…

20100115_viコロンキー.jpg ←このように、ターミナル画面の一番下の行に「:」とカーソルが表示されるようになる。この状態になったところで、エディタを終了するためのコマンドを入力するのである。

 ファイルをそのまま保存する場合(Windowsでいうところの「上書き保存」) … 「:w」 (まだviは終了しない)
 別の名前をつけて保存する場合(Windowsでいうところの「名前をつけて保存」) … 「:w File名」 (まだviは終了しない)

 ファイルをそのまま保存して終了する場合(「上書き保存」してから「終了」を同時に) … 「:wq

 ファイルを保存しないで終了する場合 … 「:q
  ※なお、開いたファイルを編集しているにもかかわらず、保存しないまま終了しようとするとエラーになるので、↓のコマンドを実行する必要がある

 編集済みのファイルを保存しないで終了する場合 … 「:q!
  ※強制的に終了するが、Windowsみたいに「本当によいですか?」みたいな確認はしてこないので要注意。

 なお、「:」(コロン)で始まるコマンドは、Enterキーを押して有効になる。モードを切り替える際のコマンドはワンキーで直ちに切り替わったことと比べて欲しい。「:」(コロン)で始まるコマンドをキャンセルしたい場合も、「Esc」キーを押せばコマンドモードに復帰するようになっている。

 それでは、今作成したファイル「lesson1.txt」には「ABCXYZ」と記述されている状態で保存し終了してもらいたい。コマンドは「:wq」と入力してからEnterキーを押す。すると、Linuxのコマンドプロンプトが表示される、viが終了したことがわかる。

※※まとめ※※
 ・viはテキストエディタである。
 ・viには、「コマンドモード」と「エディットモード」とがある。
 ・コマンドモードで「i」キーを押すと、「コマンドモード」から「エディットモード」に切り替わり、カーソルの前に文字が挿入される。
 ・コマンドモードで「a」キーを押すと、「コマンドモード」から「エディットモード」に切り替わり、カーソルの後ろに文字が挿入される。
 ・コマンドモードで「x」キーを押すと、カーソルがある位置の文字が1文字消える。
 ・エディットモードで「Esc」キーを押すと、コマンドモードに切り替わる。
 ・コマンドモードで「:」(コロン)に続けて「w」「wq」「q」「q!」と入力するとファイルを保存したり、viを終了したりすることができる。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。