Shoeisha Technology Media

資格Zine(しかくジン)

記事種別から探す

viエディタとテキスト表示・検索・置換のコマンド

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 本連載では、LPICレベル1学習のポイントを、全10回で解説していきます。第6回となる本記事のテーマは「テキストファイルの編集」です。Linuxには標準で「vi」というテキストエディタが入っています。Linuxは設定ファイルなどもテキストファイルで記述することが多いですから、viはLinux管理の必須ツールの1つといえます。加えて、テキストファイルから先頭あるいは末尾の指定行数を表示するコマンドや、「正規表現」と呼ばれる文字列の構成パターン表記を使って検索したり、置換したりするコマンドも紹介します。

viを使う

前回、シェルスクリプトの作成や様々な設定ファイルの編集を行いました。こうしたテキストファイルの編集は、Linuxサーバで作業をする上で基本中の基本の操作といってよいでしょう。

Linuxディストリビューションにはたくさんの種類がありますが、それらが標準で備えているテキストエディタに「vi」があります。Windowsでいうところの「メモ帳」に当たるソフトウェアです。Linux上でテキストファイル編集ができるようになるということは、このviを使えるようになるということに他なりません。

さっそく、viを使ってみましょう。まず、viコマンドをターミナル上で実行してください。

# vi

viが起動して、次のように表示が全く変わってしまったと思います。ようやく慣れてきたCUIのコマンドプロンプト状態(コマンドが入力できる状態)ではなくなってしまい、少し違和感を感じますね。

viの起動
viの起動

画面に表示されたメッセージを見てみると、最初に「VIM - Vi IMproved」と書かれています。これは、起動したのが厳密にはviではなく「vim」というツールだからです。とはいえ、vimはviの拡張版なので、最初はあまり気にする必要はありません。

vimはviよりも高機能ですが、viの機能だけで、ファイルの編集自体は十分に行えます。まずはviの使い方を学び、慣れてきたら、より便利なvimの拡張機能も使ってみるとよいでしょう。

なお、LPICの試験で問われるのは「vi」の操作についてです。そのため、本稿でもviの操作方法を説明していきます。

viには操作の「モード」がある

さて、viが起動した画面で、試しに「12345」とキーボードで入力みてください。画面には何も出力されないはずです。

次に「i」キーを押してみてください。すると、画面左下に「– INSERT –」(日本語環境であれば「– 挿入 –」)と表示されたと思います。この状態でもう一度「12345」と入力すると、今度はその文字列が画面に出力されたはずです。

viで文字を入力
viで文字を入力

理由は置いておいて、次に「Esc」(エスケープ)キーを押してみましょう。すると、画面左下の「– INSERT –」や「– 挿入 –」という文字が消えました。この状態で再度「12345」を入力してみてください。最初の状態のように何も表示されません。

種明かしをすると、viにはキーボードで押した文字を表示してくれるモードと、表示してくれないモードがあるため、このように挙動が異なるのです。

キーボードで押した文字を表示してくれるモードのことをインサートモード[1]といいます。表示してくれないモードで「i」キーを押すと、インサートモードに切り替わります。また、インサートモードで「Esc」キーを押すと、インサートモードではない(キーボードで打ってもその文字を表示してくれない)モードに戻ります。

このように、打った文字が入力できるインサートモードと入力できないモードがある点が、viの大きな特徴です。

[1]: インサートモードは「編集モード」「挿入モード」「入力モード」ともいいます。

インサートモードへ切り替えるさまざまな方法

「i」キーだけでなく、「a」キーや「o」キーを押してもインサートモードに切り替わります。ただし、インサートモードになったときのカーソルの位置が、「i」「a」「o」キーでは次のように微妙に異なります。

入力キー 動作
i 現状のカーソル位置でインサートモードに切り替わる
a カーソル位置が1文字後ろにずれた状態でインサートモードに切り替わる
o カーソル行の次行に1行追加され、カーソル位置がその追加行に移動した状態でインサートモードに切り替わる

これはやってみた方がわかりやすいので、実際に試してみてください。

なぜ「コマンド」モードがあるのか

ところで、入力できないモードのほうはコマンドモードといいます。なぜ「コマンド」モードなのかというと、コマンドモードでのキー入力は、viに対して何らかの処理を命じる操作(コマンド)だからです。

例えば、コマンドモードで「h」キーを押すと、カーソルが左に1文字動きます。これは、コマンドモードで「h」キーを押すという操作が、viに「カーソルを左に1文字動かす」という命令を出していることになるためです。

先ほど、コマンドモードで「i」キーを押すと、インサートモードに切り替わりました。コマンドモードでの「i」キー入力は、「インサートモードに切り替える」という命令なのです。「Esc」キーを押すとインサートモードから抜け、コマンドモードに切り替わりましたが、これも「Esc」キー入力がそういう命令だからです。

Windowsの「メモ帳」などでは、ファイルを開いたら当然のように、すぐ文字を入力できます。一方、viはインサートモードに切り替えないと文字を入力できません。「lpic」と入力したつもりが、インサートモードに切り替える「i」を押した後しかファイルに入力されず、画面を見ると「c」しか入力されていない、といったことがviでは起きます。

最初は「使いにくくて不便だ!」と思うでしょう。しかし、慣れてくるとそんなふうに思わなくなります。なぜなら、コマンドモードには、むしろ便利な点がたくさんあるからです。

では、次にコマンドモードでどのようなことができるのかを見ていきましょう。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:Linuxを知らない人のためのLPICレベル1【101試験】入門

この記事もオススメ

All contents copyright © 2015-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.0