画面エディタのvim
Fedora Coreでは,画面エディタのviは/usr/bin/vimへのシンボリック・リンクになっています。vimは「vi improved」の省略形で,vi(visual editor)の機能拡張版です。viは,先に紹介したexに画面制御機能を追加したもので,行エディタの機能を色濃く残している画面エディタです*9[拡大表示]。
vimを起動すると,写真2[拡大表示]のような画面になります。具体的には,シェルのコマンドラインで「vim 」*10[拡大表示]と入力します)。
端末タイプの見方
画面エディタは行エディタと異なり,現在使用中の画面(ウインドウ)の“タイプ”が適切に設定されている必要があります。これを端末タイプと言い,環境変数TERMに設定されています。
例えば,テキスト・ログインで仮想コンソール[拡大表示]を利用している場合には,
というように,端末タイプがlinuxになっています。
一方,グラフィカル・ログインで,デスクトップの[アプリケーション]→[システムツール]→[GNOME端末]を選択し,端末エミュレータを起動して,次のように入力すると
と出力されます。
このように端末タイプが違いますが,これは画面制御のコマンドが異なるということになります。従って,現在使用中の画面(ウインドウ)に対応した適切なタイプを設定する必要がありますが,通常は自動設定されるので,特に設定を施す必要はありません*11[拡大表示]。
なお,どのようなタイプが設定可能かを確認したい場合には,/etc/termcapファイルの内容を見てください。このファイルに記述されていない端末タイプは,原則として使うことができません。
vimのモード
vimにも,行エディタのedと同じように,入力モードとコマンド・モードがあります。しかし,前述したようにvimは行エディタのexと一体化していますので,exのコマンド・モードも使えます。混乱を避けるために,vim独自のコマンド・モードを単に「コマンド・モード」と記し,exのコマンド・モード(言い換えれば,exから受け継いだコマンド・モード)を「exモード」と記すことにします。
vimも起動時には,コマンド・モードに設定されています。 まず,vimのモード変更用のコマンドを表4[拡大表示]に示します。なお,入力モードからexモードに直接変更することはできません。exモードのみ画面最下行左端にプロンプト「:」が表示されます。
vimのモード変更以外の基本的なコマンドを表5[拡大表示]に,exの基本的なコマンドを表6[拡大表示]に示します。
表5と表6から分かるように,vimのコマンド・モードだけでは,元のファイルに上書き保存する以外に,ファイル名を指定した読み込みや保存ができません。そのため,ファイル名を指定した読み込み,あるいは保存を行いたい場合は表6のexモードのコマンドを利用します。
基本的な使い方
コマンドを見ても具体的な使い方がイメージしにくいので,操作例を紹介します。
●「/etc/inittab」の編集例
端末エミュレータ(gnome-terminal)上でvimを用いて/etc/inittabファイルを編集し,ログイン方法をグラフィカル・ログインからテキスト・ログインに変更してみましょう。まずは,inittabファイルを開きます。
編集対象のテキストがカラー表示されていることが分かります(写真3[拡大表示])。カーソル移動キー(→←↑↓)で編集対象の位置に移動します。この例では,「id:5:initdefault:」の行の「5」の文字位置に移動し,r(置換コマンド)を入力し,続いて3を入力します。
編集作業が終了したら,exのコマンドを用いて編集内容をファイルに保存します。viからexのコマンドを利用するには,コマンド・モードで「:」(コロン)を入力します。すると,画面最下行左端にプロンプト「:」が表示されます。そこで,wを入力してファイルに上書きしてから,qを入力してvimを終了します。
ファイルの変更を反映させずに(元のファイルの内容のままで)vimを終了したい場合は,「:」に続けて,q!と入力します。
●「.bash_profile」の編集例
さらに,bashの設定ファイル「.bash_profile」の編集例を示します*12[拡大表示]。ここでは,エイリアス(別名)を設定します。Linuxの端末エミュレータ画面のクリアコマンドはclearですが,Windowsのコマンド名と同じclsを別名として設定します。シェル上では,
と入力します。この設定は,シェルの実行終了で無効となります。次回のシェル起動時も有効にしたい場合には,上述の設定ファイル「.bash_profile」に以下を記述します。
vimを用いた記述手順は次のようになります。まず,シェルで以下のコマンドを入力します。
すると,写真4[拡大表示]のような画面となります。カーソル移動キーで最後の行(13行目),最後の文字(14文字目)まで移動します。次に,aを入力した後,Enterキーを押します。すると,14行目にカーソルが移動しますので,「alias cls=clear」を入力します。今回はこれで文字列挿入は終了ですので,Escキーを押してコマンド・モードに戻ります。さらに,「:」を入力しexモードにします。画面最下行左端にプロンプト「:」が表示されますので,wを入力してファイルの上書き保存を行い,最後にqを入力してvimを終了します。
これで,次回のシェル起動時から別名clsが有効となり,clearおよびclsのどちらでも画面クリアが実行されます。直ちに有効にしたい場合には,
と入力します。