JFP ユーザーズガイド

vi エディタ

vi は SunOS 上の標準的なテキストエディタです。ウィンドウ環境への依存性がなく、広範囲のファイルタイプに対応しているため、さまざまな端末で多目的に使いこなすことができます。

この節では、vi を例に SunOS で国際化されているコマンドの日本語環境での使い方を説明します。vi の機能全般については、『OpenWindows ユーザーズガイド (上級編)』および vi(1) のマニュアルページなどを参照してください。また、実際の日本語入力方法については、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、または『cs00 ユーザーズガイド』を参照してください。


注 -

この項の説明で "「xxx」を入力してください" という表現は、xxx が日本語の場合は日本語を入力し、無変換の状態に戻すまでを指します。


vi の起動

多くの SunOS コマンド同様、vi は日本語のファイル名をサポートします。例として、「コロンブスのジパング」という名前のファイルを vi で編集してみましょう。

sun% vi コロンブスのジパング

「コロンブスのジパング」というファイルがすでにあれば、vi でそのファイルを開くことができます。この例ではファイルは存在しないものとします。

vi の編集画面が現われます。

_                                                                    
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
"コロンブスのジパング" [新規ファイル]                                     


注 -

以降、vi の画面での下線マーク「 _ 」は、カーソルの位置を表します。


多くの SunOS コマンドと同様に vi は、"[新規ファイル]" のようにメッセージを日本語で表示できます (メッセージ自体は JFP が提供します)。JFP をインストールしたシステムでメッセージが日本語で表示されないときには、LC_CTYPE のロケールカテゴリが環境変数 LANG または LC_CTYPE を介して ja (japanese) または ja_JP.PCK に設定されていないか、環境変数 LC_MESSAGES が別の値に設定されていることが考えられます。正しく設定し直してください (詳細は、第 3 章「日本語対応 SunOS のユーザー環境設定」「環境変数によるロケールの設定」を参照してください)。

vi に慣れるまでは、動作モードを表示する showmode という設定が役立ちます。showmode を設定するには、コマンドモードで次のように「:set showmode」と入力します。

_                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
:set showmode                                                           

これで vi は、その時々の動作モードを画面最下行 (ステータス行) 右側に表示するようになります。たとえば、ここで i キーを入力すると vi は挿入 (insert) モードに入り、ステータス行は次のように変わります。

_                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
:set showmode                                                  挿入モード     

テキストの挿入 (文字幅の処理、行末処理)

JFP の提供する日本語入力機能などを利用して日本語のテキストを入力していくと、 vi はこれを編集画面に表示します。端末環境では一般に日本語の 1 文字は、ASCII の 2 文字 (2 カラム) 分の表示幅を持ちますが、vi は 1 行が画面の幅を越えたときにも画面の最後のカラムに日本語文字が入りきれるかどうかに応じて行の折り返し処理をします。

1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝
く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン‾
ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ
きっていた。
_                                                             
‾                                                             
‾                                                               
‾                                                             
‾                                                             
‾                                                            
‾                                                             
‾                                                             
:set showmode                                                   挿入モード  

上の例では、画面 2 行目の最後のカラムに「ド」の文字がかかりますが行内に納まりません。このような場合には「ド」の文字は次の行に回され、2 行目の行末の 1 カラムはスキップされ、それを示すために「‾」の文字が表示されます。行末のカラムのスキップを示す文字は、環境変数 MC_FILLER を使って「‾」から任意の ASCII 文字に変更できます。


注 -

本文では、現在のカーソル位置を全角文字の上にある場合は全角アンダースコア (_)、半角文字の上にある場合は半角アンダースコア (_) で表示していますが、これは使用する端末によって変わります。


たとえば、次のように設定します。

sun% setenv MC_FILLER ' '

この設定をしたあと、vi を立ち上げて同じテキストを入力すると、スキップを示す文字がスペースに変わります。

1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝
く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン
ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ
きっていた。
_                                                             
‾                                                             
‾                                                               
‾                                                             
‾                                                             
‾                                                            
‾                                                             
‾                                                             
:set showmode                                                   挿入モード  

1 文字の置換、削除、大文字・小文字変換

多くの SunOS コマンド同様、vi コマンドは 1 文字単位の処理を複数バイト文字にも適用できるよう国際化されています。置き換え、削除、大文字・小文字変換を例にとって見てみましょう。

まず、「3箇月後」の「3」( ASCII ) をコードセット 1 の「3」に置き換えてみます。Esc キーを入力してコマンドモードに移り、カーソルキーを使ってカーソルを「3」の位置に合わせます。次に r キーを入力すると、vi は 1 文字を置き換えるモードになります。

Graphic

ここで「3」を入力すると、「3」はコードセット 1 の「3」に置き換えられ、vi はコマンドモードに戻ります。

Graphic

次に「クリストファー」の最後の 1 文字「ー」を削除してみます。カーソルを削除したい「ー」に移動し x キーを入力すると、「ー」の 1 文字が削除され、画面は次のようになります。

さらに 2 行目の文字列、「ZIPANGU」の「IPANGU」を小文字に変換してみます。カーソルを「ZIPANGU」の「I」に移動して「6‾」と入力します。これにより、1 文字を大文字・小文字変換して次の文字に移動する操作が 6 回繰り返され、画面は次のように変わります (‾ キーを 6 回入力しても同じです)。

Graphic

単語単位の日本語処理

SunOS 上のいくつかのコマンドでは、単語間の区切りとして空白を使用しない言語用に拡張された、単語の識別処理がサポートされています。

vi では、コマンドモードで w (word) キーを入力することにより、カーソルが日本語の単語識別用文字分類に基づいて次の単語の先頭に移動します。同様に、b (back) キーは前にある単語の先頭に、e (end) キーは現在カーソルのある単語の末尾に、カーソルを移動します。

「スペイン女王」の「ス」にカーソルがある状態で w キーを 5 回入力すると、カーソルは日本語の単語識別用の文字分類に基づいて「女王」、「イザベル」、「の」、「援助」、「を」の単語の先頭に次々に移動します。

さらに b キーを 3 回入力すると、カーソルが 3 単語分戻り、「イザベル」の先頭に移動します。

Graphic

ここで、カーソル以降の 1 単語を書き換える cw コマンドを実行してみましょう。「Zipangu」の「Z」にカーソルを移動して、cw と入力すると画面は次のようになり、vi は「Zipangu」に置き換わる単語の入力を待ちます。

Graphic

「ジパング」と入力して Esc キーを入力すると、「Zipangu」が「ジパング」に置き換えられます。

同様に、このような単位の単語を削除することもできます。カーソルキーを使ってカーソルを「イザベル」の「イ」に移動し dw と入力すると、カーソル位置から現在の単語の最後の「ル」までが削除されます。

Graphic

改行マージンと連結コマンド (行の分割と連結)

入力テキストの改行は、Return キーを入力することによって任意に行えますが、viset コマンドと wm オプションを使用すると、行の長さを自動的にコントロールできます。さらに、日本語環境では原則として日本語文字 1 文字が改行の単位とみなされます。たとえば、次の例では画面の幅が ASCII の 80 カラム分なので、コマンドモードで「:set wm=58」を入力することにより、画面右側に 58 カラムのマージン (余白) が確保され、行の長さは 80-58=22 カラム以下になるようにコントロールされます。

Graphic

コマンドモードで o (open) キーを入力してオープンモードに移り、入力を次のように続けます。

「コロンブスは、その後もジパングをめざし、数回の航海でキューバ島やイスパニオラ島を発見した。しかし、最後までジパングを見つけることはできなかった。」

Return キーを入力せずに続けて入力しても、テキストは自動的に次のように改行されます。

ここで、「スパニオラ島を発見し」の行が次の行より 1 文字分短く改行されるのは、テキストを清書するときと同様に禁則処理が働いているためです。

次に行を連結してみましょう。Esc キーを入力してコマンドモードに移り、「コロンブス...」の行にカーソルを移動します。

Graphic

ここで J (Shift-j) キーを入力すると、現在の「コロンブス...」の行に次の「ジパング...」の行が連結されます。

Graphic

このように日本語文字の行の連結の場合には、英語の行の連結の場合とは違い、スペースが挿入されず、改行の場合と同様に自然な日本語処理が行えます。日本語固有のこれらの単語処理は、JFP の提供する各国語化によって実現されています。 [このような国際化された単語処理に慣じみのない既存の vi のユーザーは、これらの機能にとまどいを覚えるかも知れません。そのような場合には、環境変数 MB_CONSERVATIVE_EDIT を設定してください。テキストの清書に準じた日本語単語処理は vi に適用されなくなり、vi は日本語に対しても英語と同様の動作をするようになります。]

日本語文字を含む文字列の検索と置換

いくつかの SunOS コマンドと同様、vi でも日本語文字を含む文字列パターンの処理がサポートされます。コマンドモードで「/」キーを入力すると画面の最下行に「/」が表われ、検索する文字列を待つ状態になります。ここで、検索する文字列として「コロンブス」と入力してみましょう。

Graphic

Return キーを入力すると、カーソルは先頭行の「コロンブス」の先頭に移動します。

n (next) キーを入力すると、カーソルは画面 2 段落目の最初の行の「コロンブス」の先頭に移動します。

次に、1 行目の ASCII の英数字を含む「1492年」の文字列をコードセット 1 の「1492年」に変更してみます。正規表現を使って「1492年」を「...2年」で指定することにし、「:%s/...2年/1492年/g」を入力します。

Graphic

Return キーを入力すると文字列が置き換えられ、画面は次のようになります。

Graphic

ファイルの保存と vi の終了

ファイルの編集後、コマンドモードで (動作モード表示は消えます)、: (コロン) に続けて w (write) キーを入力します。入力した「:w」の文字列は画面最下行 (ステータス行) に表示されます。ここで Return キーを入力すると、vi はファイル名、行数、バイト数を表示してファイルを保存します。

Graphic

ファイルを変更していない状態またはファイルの保存後に vi を終了するときには、コマンドモードで : (コロン) キーのあとに q (quit) キーを入力します。ファイルの保存と同時に vi を終了するときには、wq を入力します。変更したファイルを保存せずに q キーを入力すると、次のような警告が出されます。

1. この行は反転表示されます。

このような場合、警告を無視して vi を終了するときには、q! または quit! と入力します。