VI(1) — NEWS-OS Programmer’s Manual
名称
vi − ex をベースとしたスクリーンエディタ
形式
vi [ −t tag ] [ −r ] [ +command ] [ −l ] [ −wn ] name ...
解説
vi (visual) は ex(1) をベースとしたスクリーンエディタです。 ex と vi は同じプログラムコードで実行されます。 従って、 vi から ex のコマンドモードに入ることや、 またその逆も可能です。
Vi Quick Reference カードと Introduction to Display Editing with Vi に vi の使用法についての詳細な解説があります。
多国語対応
漢字をはじめ多国語に対応するための処理は、以下のとおりです。
stty コマンドを使って、現在の端末のモードを確認してください。 端末のモードは、non parity, pass8 で、漢字端末のコードが sjis、euc、jis または tca (台湾コード) でなければなりません。 ascii の時は、漢字を含むファイルの編集はできません。
正規表現内で ASCII 以外の文字を使用できます。文字単位でマッチ ングします。コードの順位は、次のとおりです。
日本語: ASCII < JIS X0201 片仮名 < JIS X0208 漢字
韓国語: ASCII < KS C5601 ハングル・漢字
中国語(台湾): ASCII < TCA 漢字
ヨーロッパ: ASCII < ISO 8859-1 ラテン補助文字
カーソルの移動は文字単位です。 カラム移動 (l コマンド) で指定したカラムが 全角文字(2 カラム文字)の右側部分である場合、 その全角文字の左側部分にカーソルが置かれます。
vi では、 すべての文字を各国語に応じていくつかの文字集合に分類しています。
日本語 (9 種類)
ASCII:英数字、特殊文字、
JIS X0208:漢字、平仮名、片仮名、英数字、特殊文字
JIS X0201:片仮名文字、片仮名句読点
韓国語 (7 種類)
ASCII:英数字、特殊文字、
KS C5601:漢字、ハングル、ハングル母音・子音、英数字、
特殊文字
中国語(台湾) (6 種類)
ASCII:英数字、特殊文字、
TCA:漢字、発音記号、英数字、特殊文字
ヨーロッパ (2 種類)
ISO 8859-1:英数字、特殊文字
そして、同じ文字集合の連続する文字列を「ワード」として扱っています。 したがって、ワード移動では、カーソルは、異なる文字集合のところまで 移動することになります。
全角文字の「!」、「?」も 「センテンス」の区切り文字として認識します。 日本語のの場合は、 JIS X0201 の片仮名句読点も「センテンス」の区切り文字として認識します。
vi では、行の最後のカラムに全角文字(2カラム文字)を表示しない ようにしてあります。もし、このような状況が発生した場合は、そ の文字は次の行の最初に表示されます。
f、F、t、 T コマンドで ASCII 以外の文字の検索ができます。
termcap に KJ という論理型変数があると、 端末が全角文字(2 カラム文字)を認識して カーソル移動を文字単位で処理すると解釈します。
関連ファイル
ex(1) を見て下さい。
関連事項
ex(1), edit(1),
Vi Quick Reference card, An Introducion to Display Editing with Vi (USD:15)
著者
Willam Joy
Mark Horton、 visual モードのマクロの追加とバージョン 3 のメンテナンス
バグ
^T を使ったソフトウェアタブは autoindent の直後でしか働きません。
インテリジェント端末上で左右のシフトは、 端末の文字挿入、 削除機能を使用していません。
空白に続く単語入力に対して出力カラムを見るので、 wrapmargin オプションは、うまく働かないことがあります。 長い単語をマージンを越えて入力し続けると、 改行されたように次の行に出力されますが、 実際は、改行は起こっていません。
インテリジェント端末でタブが存在する場合、 行内の挿入、 削除は遅くなることがあります。 これは、端末がそれを正確に実行するためには助けが必要だからです。
削除時に名前付きバッファにテキストをセーブするのは効果的ではありません。
source コマンドは :source として実行させる場合動作しません。 また、 :append、:change、:insert コマンドを使う方法がありません。 なぜなら、 : によるエスケープに対して 1 行以上の入力行を与えることが不可能だからです。 これらのものを :global で使うのならば、ユーザは Q を実行し ex の コマンドモードにはいるべきです。 それらを実行した後、 vi や open によってスクリーンエディタに入り直してください。
NEWS-OSRelease 4.2.1R