VI(1) — UNIX 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 コマンドを使って、現在の tty のモードを確認してください。 tty のモードは、non parity, pass8 で、漢字端末のコードが sjis、 euc または jis でなければなりません。 ASCII の時は、漢字を含むファイルの編集はできません。
正規表現内で全角文字や半角片仮名を使用できます。文字単位でマッチングします。 コードの順位は、次のとおりです。
ASCII < 半角片仮名 < 全角文字
以下、vi の多国語処理について説明します。
カーソルの移動は文字単位です。 カラム移動 (‘l’コマンド) で指定したカラムに全角文字の 2バイト目がある場合、 その全角文字の第 1バイトにカーソルがおかれます。
vi では、すべての文字を以下の 9種類の文字集合に分類しています。
全角漢字 ASCII英数字
全角平仮名 ASCII特殊文字
全角片仮名
全角英数字 半角片仮名文字
全角特殊文字 半角片仮名特殊文字
そして、同じ文字集合の連続する文字列を「ワード」として扱っています。 したがって、ワード移動では、カーソルは、異なる文字集合のところまで 移動することになります。
全角の ‘!’、‘?’ や半角片仮名句読点を 「センテンス」の区切り文字として認識します。
vi では、行の最後のカラムに全角の表示をしないようにしてあります。 もし、このような状況が発生した場合は、全角文字は次の行の最初に表示されます。
‘f’、‘F’、‘t’、‘T’ コマンドで全角文字の検索ができます。
termcap に KJ という論理型変数があると、端末が全角文字を認識して カーソル移動を全角文字単位で処理すると解釈します。
関連ファイル
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 3.3