VI(1)

名称
ex, vi, view - テキストエディタ

書式
ex [-eFGRrSsv ] [-c cmd ] [-t tag ] [-w size ] [file ...]
vi [-eFGlRrSv ] [-c cmd ] [-t tag ] [-w size ] [file ...]
view [-eFGRrSv ] [-c cmd ] [-t tag ] [-w size ] [file ...]

ライセンス
vi プログラムは自由に再配布できます。ライセンスファイルに挙げた条件の 下で、コピー、改変、他者との共有は自由にして下さい。どこかの会社 (個人ではありません!) で vi が購入を希望するほど十分有用であると認めた場合、 または会社で再配布を希望する場合、作者へ寄付をいただければ幸いです。

解説
vi はスクリーン指向のテキストエディタです。 ex は行指向のエディタです。 ex と vi は同じプログラムで別のインタフェースを提供し、 エディット中に切り替えることが可能です。 view は vi に -R (読み込み専用) オプション をつけて実行した場合と同じです。

このマニュアルは ex/vi テキストエディタから派生した nex/nvi 用として提供されています。 nex/nvi は Fourth Berkeley Software Distribution (4BSD) オリジナルの ex と vi のバグひとつひとつの互換性も含めて置き換えたつもりです。 このマニュアルでは、以後、伝統的な ex/vi の実装と区別する必要がある時だけ、 nex/nvi という表現を使います。

このマニュアルページは、 ex/vi を既に良く知っているユーザのためのものです。それ以外の人は、このマニュアルを 読む前に良いチュートリアルをしっかりと読んでおくべきです。あなたが不慣れな 環境のもとで、否応無く、しかも直ちに仕事を片付けなければならないなら、 オプションの一覧の後にある、``ファーストスタートアップ'' という タイトルのセクションを読んで下さい。 あなたがその仕事をこなすには、おそらくこれで十分でしょう。

以下のオプションが利用できます:

-c  エディットセッションがスタートした後ですぐに cmd を実行します。特にファイル中の最初の位置を決定するのに非常に役立ちますが、 cmd はポジショニングコマンドに限定されません。これは、伝統的な ``+cmd'' 構文に代わる、POSIX 1003.2 で規定されたインタフェースです。 nex/nvi は新旧どちらの構文もサポートしています。

-e  コマンド名が ex であるかのように、ex モードで編集を開始します。

-F  編集を開始する時にファイル全体のコピーを作成しません (デフォルトでは、あなたの編集作業中に他の誰かがファイルを変更 する場合に備えてコピーを作成します)。

-l  lisp オプションと showmatch オプションをセットして編集を始めます。

-G  gtagsmode オプションがセットされている時と同じように、 gtags モードで編集を開始します。

-R  コマンド名が view であるかのように、もしくは readonly オプション付きで起動されたかのように、 読み込み専用モードで編集を開始します。

-r  指定したファイルの復旧を行ないます。もしファイルが指定されなかった場合は、 復旧可能なファイルの一覧を表示します。もし、復旧可能なファイルの中に 指定した名前のものがなかった場合は、 -r オプションが指定されなかったかのように、そのファイルの編集を行ないます。

-S  外部プログラムへのすべてのアクセスを許さない secure エディットオプションをセットして起動します。

-s  バッチモードに入ります。バッチモードは ex エディットセッションの時しか使えません。バッチモードは ex スクリプトを実行する時に便利です。このモードでは、プロンプトや、 情報を伝えるメッセージや、その他のユーザ向けのメッセージは出力されず、 スタートアップファイルや環境変数は読み込まれません。これは、伝統的な ``-'' 引数に代わる、POSIX 1003.2 で規定されたインタフェースです。 nex/nvi は新旧どちらの構文もサポートしています。

-t  指定したタグの位置でエディットを開始します。 ( ctags(1) 参照)

-w  起動時のウィンドウの大きさを指定した行数にします。

-v  コマンド名が vi か view であるかのように、 vi モードでエディットを開始します。

ex/vi へのコマンド入力は、標準入力から行なわれます。 vi のインタフェースは、標準入力が端末でない場合にはエラーになります。 ex のインタフェースでは、 ex は、標準入力が端末でなくても、 ちょうど -s オプションが指定されている場合のようにセッションがバッチモード であっても、とにかく読み込みます。

ex/vi は成功時に 0 を、エラーが起こった時には 0 より大きな値を返します。

ファーストスタートアップ
このセクションは、 vi を使って簡単な編集作業を行なうのに必要な最低限のことを教えてくれるでしょう。 あなたが以前に一度もスクリーンエディタを使ったことがないなら、この簡単な紹介 の章でさえも問題になるかも知れません。この場合は、すでに vi を知っている人を探して、その人と一緒にこのセクションを読むべきです。

vi はスクリーンエディタです。つまり、 vi は常に画面全体を使い、ファイルの一部分を画面上の (最終行以外の) それぞれの行に表示します。 画面の最終行は、あなたが vi にコマンドを与えたり、 vi があなたに情報を与えたりするのに使われます。

もうひとつ知っておくべきこととして、 vi はモードを持ったエディタであることがあります。 つまり、テキストを入力したり、コマンドを実行したりするには、 それぞれの作業を正しいモードで実行しなければなりません。 ファイル編集の最初はコマンドモードになっています。入力モードにする コマンドが幾つかあります。入力モードから抜けるキーはただひとつ、 それは <escape> キーです。 (キーの名前は、<,> ではさんで書くことにします。 例えば、<escape> は ``エスケープ'' キーのことを示し、 通常キーボードでは、``esc'' と表示してあります。) どのモードにいるのかが判らなくなったならば、 vi が、ビープ音を出すまで、<escape> キーを押し続けて下さい。 (一般的に、 vi は、許されていないことを何か試みたり、行なったりするとビープ音を鳴らします。 エラーメッセージも表示します。)

ファイルの編集を始めるには、``vi file_name<carriage-return>'' という具合に、コマンドを入れます。 編集を始めると、まず直ちに、 ``:set verbose showmode<carriage-return>'' とコマンドを入れましょう。 そうすることによって、エディタは、 画面の最終行に詳細なエラーメッセージを出すようになりますし、 現在のモードも表示するようになります。

ファイル内を移動するコマンド :

h   カーソルを 1 文字左へ動かす。

j   カーソルを 1 行下へ動かす。

k   カーソルを 1 行上へ動かす。

l   カーソルを 1 文字右へ動かす。

<cursor-arrows>
    カーソルを矢印が示す方へ動かす。

/text<carriage-return>
    ファイル中の ``text'' を検索し、その最初の文字へカーソルを移動します。

新しく文書入力するコマンド :

a   入力した文書カーソルの 後ろへ 追加します。

i   入力した文書カーソルの 前に 挿入します。

o   カーソルの下に新しい行を設けて、文書の入力を開始します。

O   カーソルの上に行を設けて、文書の入力を開始します。

<escape>
    一旦、 a, i, O ないし o などのコマンドで入力モードに入ってからは、 文書の入力を終了しコマンドモードへ戻るためには、 <escape> コマンドを用います。

文書をコピーするコマンド :

yy  カーソルのある行をコピーします。

p   カーソルのある行の下にコピーした行を追加します。

文書を削除するコマンド :

dd  カーソルのある行を削除します。

x   カーソルのある文字を削除します。

ファイルに書き込むコマンド :

:w<carriage-return>
    もともと vi のコマンドラインで指定したファイルに、ファイルの内容を書き戻します。

:w file_name<carriage-return>
    指定された ``file_name'' に、ファイルの内容を書き出します。

編集を終了し、エディタを抜けるコマンド :

:q<carriage-return>
    エディットを終了し、 vi から抜けます。 (ファイル内容が変更されていてまだ保存されていなければ、 vi は、終了指示を拒否します)

:q!<carriage-return>
    変更した内容を放棄し、終了します。

最後に注意していただきたいこととして、 通常の文字ではない文字は、画面上で複数カラムを占めることがあります。また、 長い行は、画面上の 1 行に収まらないこともあります。 上記のコマンドは、``物理的な'' 行や文字に対して作用します。 つまり、行関係のコマンドはその行が画面上で 何行になろうと行全体に影響を及ぼしますし、文字関係のコマンドはその文字が 画面上で何カラムを占めていても、その文字全体に影響を及ぼします。

VI コマンド
以下の章では、 vi のコマンドモードで現れるコマンドについて説明します。 それぞれの記述では、見出し行にコマンドの使用書式を一覧表示します。

[count] <control-A>
    count で指定した回数だけ、前方へ現在の単語を検索します。

[count] <control-B>
    count で指定した回数だけ、画面を後方へ戻します。

[count] <control-D>
    count で指定した行数だけ、画面を前方へスクロールします。

[count] <control-E>
    count で指定した行数だけ、画面を前方へスクロールします。 カーソルは現在行から離れますが、可能な場合は元のカラムに留まります。

[count] <control-F>
    count で指定した回数だけ、画面を前方へスクロールします。

<control-G>
    ファイル情報を表示します。

<control-H>

[count] h
    count で指定した文字数だけ、カーソルを現在行中で戻します。

[count] <control-J>

[count] <control-N>

[count] j
    count で指定した行数だけ、カラム位置を変えずにカーソルを 下へ移動します。

<control-L>

<control-R>
    画面を再表示します。

[count] <control-M>

[count] +
    count で指定した行数だけ下の行の、 最初の空白以外の文字の位置へカーソルを 移動します。

[count] <control-P>

[count] k
    count で指定した行数だけ、 カラム位置を変えずにカーソルを上へ移動します。

<control-T>
    最近のタグの状態へと戻ります。

<control-U>
    count で指定した行数だけ、画面を後方へスクロールします。

<control-W>
    編集中の次の下位のスクリーンに切り替わります。 編集中の下位のスクリーンが他に無い場合には、最初のスクリーンへ切り替えます。

<control-Y>
    count で指定した行数だけ、画面を後方にスクロールします。 できるかぎり現在の行、カラムにカーソルを残します。

<control-Z>
    現在の処理を中断 (suspend) します。

<escape>
    ex コマンドを実行します。もしくは、実行中のコマンドを部分的にキャンセルします。

<control-]>
    タグ参照の内容をタグスタックへプッシュします。 gtagsmode では、行の最初のカラムにいる時は関数の参照位置を探し、 そうでない時は関数の定義位置を探します。

<control-^>
    最後に編集したファイルへ切り替えます。

[count] <space>

[count] l
    count で指定した文字数だけ、カーソルを前方へ行を変えずに移動します。

[count] ! motion shell-argument(s)
    シェルコマンドの結果を用いて文書を置き換えます。

[count] # #|+|-
    カーソルが指す場所の数を増減します。

[count] $
    カーソルを現在の行の末尾に移動します。

%   対となる文字へカーソルを移動します。

&   現在行で、前回実行した置換コマンドを再び実行します。

'<character>

`<character>
    マークした文字 <character> の場所へ戻ります。 <character>.

[count] (
    count で指定された数だけ、前の文へ戻ります。

[count] )
    count で指定された数だけ、後ろの文へ移動します。

[count] ,
    count で指定された回数だけ、逆方向へ文字を検索します。

[count] -
    count で指定された回数だけ、 直前の行で最初に現れる空白でない文字への移動を行ないます。

[count] .
    直前の vi 編集コマンドを繰り返します。

/RE<carriage-return>

/RE/ [offset]<carriage-return>

?RE<carriage-return>

?RE? [offset]<carriage-return>

N

n   前方/後方に向かって、正規表現による検索を行ないます。

0   現在行の最初の文字に移動します。

:   ex コマンドを実行します。

[count] ;
    文字検索を count で指定された回数だけ繰り返します。

[count] < motion

[count] > motion
    現在行を、左/右にシフトします。

@ buffer
    バッファに保存されたコマンドを実行します。

[count] A
    入力モードに入り、文書を行の最後に追加します。

[count] B
    count で指定された回数だけ、大単語 (bigword) の先頭文字への移動を繰り返します。

[buffer] [count] C
    現在位置から行末までを変更します。

[buffer] D
    現在位置から行末まで削除します。

[count] E
    count で指定された回数だけ、大単語の末尾の文字への移動を繰り返します。

[count] F <character>
    count で指定された回数だけ、行の先頭から逆方向に文字 <character> を検索/移動を繰り返します。

[count] G
    ファイルの最初から数えて count 行目へ、もしくは count を指定しなかったときはファイルの末尾の行へ、カーソルを移動します。

[count] H
    画面の最初から数えて count - 1 行目に移動します。

[count] I
    入力モードに入り、行の先頭へ文書を挿入します。

[count] J
    現在行と次の行を結合します。

[count] L
    画面の下から数えて count - 1 行目に移動します。

M   画面中央の行へ移動します。

[count] O
    入力モードに入ります。現在行の直前に新しい行を作り、文書を追加します。

[buffer] P
    バッファに保存した文書を挿入します。

Q   vi (もしくは visual) モードを終了し、 ex モードへ切り替わります。

[count] R
    入力モードに入り、現在行の内容を置き換えます。

[buffer] [count] S
    count で指定した行数だけ、行を置き換えます。

[count] T <character>
    count で指定した回数だけ、現在行で逆方向に検索し、指定された文字 <character> の 後ろ の文字に移動します。

U   現在行を、カーソルが最後に入ってきた時の直前の状況に復元します。

[count] W
    count で指定した回数だけ、大単語単位で移動します。

[buffer] [count] X
    count で指定した回数だけ、カーソルの前の文字を削除します。

[buffer] [count] Y
    行のコピー、(もしくは ``ヤンク'') を count で指定した行数だけ、指定したバッファに取り込みます。

ZZ  ファイルに書き込み、 vi を終了します。

[count] [[
    count で指定した回数だけ、後方のセクションの先頭へ移動します。

[count] ]]
    count で指定した回数だけ、前方のセクションの末尾へ移動します。

^   現在行の空白でない最初の文字へ移動します。

[count] _
    count - 1 で指定した行数だけ、下の行の最初の空白でない文字へ移動します。

[count] a
    入力モードに入り、カーソルの後ろに文書を追加します。

[count] b
    count で指定した回数だけ、後方へ単語単位で移動します。

[buffer] [count] c motion
    範囲指定した文書を変更します。

[buffer] [count] d motion
    範囲指定した文書を削除します。

[count] e
    count で指定した数だけ前方の単語の終りに移動します。

[count] f<character>
    現在行の中で、行末まで count で指定した回数だけ、 <character> を検索します。

[count] i
    入力モードに入り、カーソルの前に文書を挿入します。

m <character>
    現在の状態 (行とカラム) を <character> へ、保存します。

[count] o
    入力モードに入ります。現在行の下に新しい行を作り、文章を追加します。

[buffer] p
    バッファから文章を取り出し、追加します。

[count] r <character>
    count で指定した文字数だけ、文字を置換します。

[buffer] [count] s
    現在行の中で、カーソルのある文字から count で指定する回数だけ、文字を入れ換えます。

[count] t <character>
    現在行の中で、前方へ count で指定する回数だけ、 <character> を検索し、その文字の 直前 へ移動します。

u   ファイルに最後に行なった変更を取り消します。

[count] w
    count で指定した回数だけ、前方へ単語単位で移動します。

[buffer] [count] x
    count で指定した回数だけ、文字を削除します。

[buffer] [count] y motion
    count と motion で指定された範囲をバッファへコピー (もしくは ``yank'') します。

[count1] z [count2] -|.|+|^|<carriage-return>
    画面を再表示します。あわせてカーソル位置や画面のサイズを変更することも できます。

[count] {
    count で指定した回数だけ、後方へ段落単位で移動します。

[count] |
    現在行の中で count で指定した column 位置に移動します。

[count] }
    count で指定した回数だけ、前方へ段落単位で移動します。

[count] ~
    count で指定した回数だけ、文字 (列) の大文字、小文字を入れ換えます。

[count] ~ motion
    count と motion で指定された範囲の文字列の大文字小文字を入れ換えます。

<interrupt>
    現在の作業を中断します。

VI の文書入力コマンド
以下のセクションでは、 vi エディタの文書入力に用するコマンドに関して記します。

<nul>
    直前の入力を繰り返します。

<control-D>
    直前の shiftwidth のカラム境界まで消去します。

^<control-D>
    オートインデント文字を全部消し、インデント状態を解除します。

0<control-D>
    オートインデント文字を全部消します。

<control-T>
    カーソルが shiftwidth オプションの偶数倍のカラム数の直後に来るまで、適当な数の <tab> と <space> 文字を挿入します。

<erase>

<control-H>
    最後に入力した文字を消します。

<literal next>
    次の文字を引用します。

<escape>
    文書を全部ファイルに格納し、コマンドモードへ戻ります。

<line erase>
    現在行を消します。

<control-W>

<word erase>
    最後に入力した単語を消します。 単語の定義は、 altwerase と ttywerase のオプションに依存します。

<control-X>[0-9A-Fa-f]+
    指定した 16 進の値を持つ文字を挿入します。

<interrupt>
    文書入力モードを中断し、コマンドモードへと戻ります。

EX コマンド
以下のセクションでは、 ex エディタで用いられるコマンドに関して記します。 以下のエントリのうち、見出し行にはコマンドの使用書式を記載してあります。

<end-of-file>
    画面をスクロールします。

! argument(s)

[range]! argument(s)
    シェルコマンドを実行するか、もしくはシェルコマンドを用いて 指定範囲の行にフィルタをかけます。

"   コメントです。

[range] nu[mber] [count] [flags]

[range] # [count] [flags]
    指定行を、その行番号を前に付けて表示します。

@ buffer

* buffer
    バッファの中身を実行します。

[line] a[ppend][!]
    指定行の後に、入力文字を追加します。

[range] c[hange][!] [count]
    range で指定した範囲を入力文字で置き換えます。

cs[cope] add | find | help | kill | reset
    cscope コマンドを実行する。

[range] d[elete] [buffer] [count] [flags]
    ファイルから行を削除します。

di[splay] b[uffers] | c[onnections] | s[creens] | t[ags]
    バッファ、cscope 接続、画面、タグを表示します。

[Ee][dit][!] [+cmd] [file]

[Ee]x[!] [+cmd] [file]
    別のファイルを編集します。

exu[sage] [command]
    指定した ex コマンドの使い方を表示します。

f[ile] [file]
    ファイル名を表示し、指定があればファイル名を変更します。

[Ff]g [name]
    vi モードのみ。 指定した画面をフォアグラウンドに表示します。

[range] g[lobal] /pattern/ [commands]

[range] v /pattern/ [commands]
    パターンに合致した (しない) 行にコマンドを適用します。

he[lp]
    ヘルプメッセージを表示します。

[line] i[nsert][!]
    入力文書を指定した行の前に挿入されます。

[range] j[oin][!] [count] [flags]
    行を結合します。

[range] l[ist] [count] [flags]
    行を曖昧さがないように表示します。

map[!] [lhs rhs]
    マップを定義もしくは表示します。( vi のみ)

[line] ma[rk] <character>

[line] k <character>
    行を <character> としてマークします。

[range] m[ove] line
    指定した行を目標行の後ろに移動します。

mk[exrc][!] file
    略語、エディタのオプション、マップを指定したファイルに書き込みます。

[Nn][ext][!] [file ...]
    引数リストで指定した次のファイルの編集に移行します。

[line] o[pen] /pattern/ [flags]
    オープンモードに入ります。

pre[serve]
    後で ex -r オプションを用いてファイルを復元できる形式にして保存します。

[Pp]rev[ious][!]
    引数リストで指定した 1 つ前のファイルを編集します。

[range] p[rint] [count] [flags]
    指定した行を表示します。

[line] pu[t] [buffer]
    バッファの内容を現在行に追加します。

q[uit][!]
    編集を終了します。

[line] r[ead][!] [file]
    ファイルを読み込みます。

rec[over] file
    事前に保存されている場合に、 file を復元します。

res[ize] [+|-]size
    vi モードのみ。 現在の画面を大きくするか、もしくは小さくします。

rew[ind][!]
    引数リストを巻き戻し、最初の引数のファイルの編集に移行します。

rta[g][!] tagstring
    指定したタグを参照しているファイルを編集します。(gtagsmode でのみ有効)

se[t] [option[=[value]] ...] [nooption ...] [option? ...] [all]
    エディタのオプションを表示、もしくは設定します。

sh[ell]
    シェルプログラムを実行します。

so[urce] file
    ファイルから ex コマンドを読み込み、実行します。

[range] s[ubstitute] [/pattern/replace/] [options] [count] [flags]

[range] & [options] [count] [flags]

[range] ~ [options] [count] [flags]
    置換を行ないます。

su[spend][!]

st[op][!]

<suspend>
    編集を一時中断します。

[Tt]a[g][!] tagstring
    指定のタグを含むファイルを編集します。

tagn[ext][!]
    現在のタグの次のタグを含むファイルを編集します。

tagp[op][!] [file | number]
    スタックから指定したタグを取り出します。

tagp[rev][!]
    現在のタグの前のタグを含むファイルを編集します。

unm[ap][!] lhs
    指定した文字列のマップ定義を解除します。

ve[rsion]
    ex/vi のバージョンを表示します。

[line] vi[sual] [type] [count] [flags]
    ex モードのみ。 vi モードに入ります。

[Vi]i[sual][!] [+cmd] [file]
    vi モードのみ。 新しいファイルを編集します。

viu[sage] [command]
    vi コマンドの使い方を表示します。

[range] w[rite][!] [>>] [file]

[range] w[rite] [!] [file]

[range] wn[!] [>>] [file]

[range] wq[!] [>>] [file]
    ファイルに書き出します。

[range] x[it][!] [file]
    修正されていれば、ファイルに書きだします。

[range] ya[nk] [buffer] [count]
    指定行をバッファにコピーします。

[line] z [type] [count] [flags]
    ウィンドウのサイズを調節します。

SET オプション
set (または unset) することによりエディタの動作を変更することができる オプションが非常にたくさんあります。このセクションでは、 これらのオプションとその短縮形とデフォルト値を説明します。

以下の各項目では、最初にオプションをフルネームで、 その次に同じ意味を持つ短縮形が続きます。 角括弧の部分は、デフォルト値です。 ほとんどのオプションは on または off のようなブール値で、 関連する値は持ちません。

これらのオプションは、特に断りがない場合は ex と vi の両方のモードに適用されます。

altwerase [off]
    vi のみ。 別の単語削除アルゴリズムを選択します。

autoindent, ai [off]
    改行時に自動的にインデントします。

autoprint, ap [off]
    ex のみ。 自動的に現在の行を表示します。

autowrite, aw [off]
    別のファイルに切り替える際に、 ファイルが変更されているなら自動的にセーブします。

backup [""]
    ファイルが上書きされる前にバックアップファイルを作成します。

beautify, bf [off]
    コントロール・キャラクタを切り捨てます。

cdpath [環境変数 CDPATH、またはカレントディレクトリ]
    cd コマンドのパス接頭子として使われるディレクトリパスです。

cedit [no default]
    コロンコマンドライン履歴を編集する文字をセットします。

columns, co [80]
    画面のカラム数をセットします。

comment [off]
    vi のみ。 シェルスクリプト、C、C++言語ファイル先頭のコメントの読み込みをスキップします。

directory, dir [環境変数 TMPDIR、または /tmp]
    テンポラリファイルを作成するディレクトリです。

edcompatible, ed [off]
    置換 コマンドの接尾子の ``c'' と ``g'' の値を記憶するようにします。 通常は新しくコマンドを実行するたびに初期化します。

errorbells, eb [off]
    ex のみ。 エラーメッセージをベルとともに知らせます。

exrc, ex [off]
    ローカルディレクトリのスタートアップファイルを読み込みます。

extended [off]
    正規表現を egrep(1)- スタイルに拡張します。

filec [no default]
    コロンコマンドライン上のファイルパス補完を行なう文字をセットします。

flash [on]
    エラー時にビープを鳴らすのではなく、画面をフラッシュします。

gtagsmode, gt [off]
    tags の代わりに GTAGS と GRTAGS を使います。

hardtabs, ht [8]
    スペースをハードウェアタブ設定に合わせて設定します。

iclower [off]
    検索文字列に大文字が現れなければ、すべての正規表現を大文字小文字の 区別なく行なうようにします。

ignorecase, ic [off]
    正規表現検索で大文字小文字の違いを無視します。

keytime [6]
    ex/vi は、後に続くキーを先のキーに続けて解釈しキーマッピングを行ないますが、 後に続くキー入力の待ち時間を1/10秒単位で指定します。

leftright [off]
    vi のみ。 左右のスクロールを行ないます。

lines, li [24]
    vi のみ。 画面の行数を設定します。

lisp [off]
    vi のみ。 さまざまなサーチコマンドとオプションの動作を Lisp 言語編集用に 修正します。 このオプションはまだ実装されていません。

list [off]
    行を曖昧でない形式で表示します。

lock [on]
    どのファイルの編集、読み込み、書き込みに関しても、排他的ロックをする ように試みます。

magic [on]
    ある種の文字を正規表現中で特殊扱いします。

matchtime [7]
    vi のみ。 showmatch オプションが設定されている場合、 ex/vi は対になる括弧の上で一時停止しますが、その停止時間を 1/10 秒単位で指定します。

mesg [on]
    他のユーザからのメッセージ着信を許可します。

modelines, modeline [off]
    それぞれのファイルの最初と最後の数行を ex コマンドとして読み込みます。 このオプションが実装されることは決してありません。

noprint [""]
    表示可能な文字として扱われない文字を指定します。

number, nu [off]
    各行先頭に行番号を付けて表示します。

octal [off]
    表示出来ない文字を 8 進数で表示します。デフォルトでは 16 進表示です。

open [on]
    ex のみ。 このオプションが設定されていなければ、 open と visual コマンドは許されません。

optimize, opt [on]
    vi のみ。 ダム端末へのテキスト出力速度を最適化します。 このオプションはまだ実装されていません。

paragraphs, para [IPLPPP"PP LIpplpipbp]
    vi のみ。 { と } コマンドで使用する段落境界の定義を追加します。

path []
    編集するファイルを探すディレクトリの追加分を定義します。

print [""]
    常に表示可能な文字として扱われる文字を指定します。

prompt [on]
    ex のみ。 コマンドプロンプトを表示します。

readonly, ro [off]
    ファイルとそのセッションを読み込み専用とします。

recdir [/var/tmp/vi.recover]
    復元用のファイルを置くディレクトリです。

redraw, re [off]
    vi のみ。 ダム端末上で、インテリジェント端末をシミュレートします。 このオプションはまだ実装されていません。

remap [on]
    解決されるまで、キーマップを解釈します。

report [5]
    変更ないしヤンクについて、エディタが報告する行数を設定します。

ruler [off]
    vi のみ。 最下行に行/カラムを示す罫を表示します。

scroll, scr [window / 2]
    スクロールする行数を設定します。

searchincr [off]
    / と ? コマンドをインクリメンタルにセットします。

sections, sect [NHSHH HUnhsh]
    vi のみ。 [[ と ]] コマンドで使用するセクション境界の定義を追加します。

secure [off]
    外部プログラムへのすべてのアクセスを止めます。

shell, sh [環境変数 SHELL、または /bin/sh]
    エディタ上から使われるシェルを選択します。

shellmeta [~{[*?$`'"\]
    ファイル名の拡張が必要なとき、その決定をするメタキャラクタを セットします。

shiftwidth, sw [8]
    オートインデント、シフトコマンドで用いる幅を設定します。

showmatch, sm [off]
    vi のみ。 ``{'' と ``('' に対し ``}'' と ``)'' の括弧の対応を表示します。

showmode, smd [off]
    vi のみ。 現在のエディタのモードと ``変更'' フラグを表示します。

sidescroll [16]
    vi のみ。 左右スクロールで動く幅を設定します。

slowopen, slow [off]
    文書を入力中、画面更新を遅らせて表示します。 このオプションはまだ実装されていません。

sourceany [off]
    現在のユーザの所有でないスタートアップファイルを読み込みます。 このオプションが実装されることは決してありません。

tabstop, ts [8]
    このオプションは、表示で使用されるタブの幅を設定します。

taglength, tl [0]
    タグの名前を判別可能な最大文字数を設定します。

tags, tag [tags /var/db/libc.tags /sys/kern/tags]
    タグファイルのリストを設定します。

term, ttytype, tty [環境変数 TERM]
    端末の型を設定します。

terse [off]
    このオプションは伝統的にエディタの示すメッセージをより簡潔なものにする ために作られています。 この実装では何の影響も与えません。

tildeop [off]
    ~ コマンドが連係動作をするように修正します。

timeout, to [on]
    キーをマップする際のタイムアウト。

ttywerase [off]
    vi のみ。 別の削除アルゴリズムを選択します。

verbose [off]
    vi のみ。 エラーが起こる度にエラーメッセージを表示します。

w300 [no default]
    vi のみ。 転送レートが 1200 ボー以下の場合に設定するウィンドウサイズ。

w1200 [no default]
    vi のみ。 転送レートが 1200 ボーの場合に設定するウィンドウサイズ。

w9600 [no default]
    vi のみ。 転送レートが 1200 ボー以上の場合に設定するウィンドウサイズ。

warn [on]
    ex のみ。 このオプションは、 ファイルが最後に書き込まれた後でファイルが修正されている場合、 ! コマンドが実行される前に端末に警告メッセージ を出すようにします。

window, w, wi [環境変数 LINES]
    画面のウィンドウサイズを設定します。

windowname [off]
    アイコン名、ウィンドウ名を、たとえエディタ終了時に戻すことができなく なるとしても、現在作業中のファイル名に変えます。

wraplen, wl [0]
    vi のみ。 左マージンから指定したカラム数で、行を自動的に折り返します。 もし、 wraplen と wrapmargin の両方の編集オプションがセットされると、 wrapmargin の値が使われます。

wrapmargin, wm [0]
    vi のみ。 右マージンから指定したカラム数で、行を折り返します。 wraplen と wrapmargin 編集オプションの両方が指定されると、 wrapmargin の値が使われます。

wrapscan, ws [on]
    検索が、ファイルの最後に達したら最初へと戻ります。

writeany, wa [off]
    ファイルの上書きチェックを切り替えます。

環境変数

COLUMNS
    画面のカラム数。 この値は、システムや端末固有のどの値をも上書きします。 ex/vi の起動時に環境変数 COLUMNS が設定されていない場合、または columns オプションによりユーザが明示的に値をリセットした場合は、 ex/vi は環境変数 COLUMNS にこの値を設定します。

EXINIT
    ex のスタートアップコマンドのリスト。 NEXINIT が設定されていない場合に読み込まれます。

HOME
    ユーザのホームディレクトリ。 起動時に ``$HOME/.nexrc'' と ``$HOME/.exrc'' を読み込むための初期ディレクトリパスとして使われます。 この値は、 vi の cd コマンドのデフォルトディレクトリとしても使われます。

LINES
    画面の行数。 この値は、システムや端末固有のどの値をも上書きします。 ex/vi 起動時に、環境変数 LINES が設定されていないか、 lines オプションによりユーザが明示的に値をリセットした場合は、 ex/vi は環境変数 LINES にこの値を設定します。

NEXINIT
    ex のスタートアップコマンドのリスト。

SHELL
    ユーザが選んだシェル。 ( shell オプションを参照)

TERM
    ユーザの端末の型。デフォルトの型は ``unknown'' です。 ex/vi 起動時に環境変数 TERM の値が設定されていないか、または、 term オプションによりユーザが明示的に値をリセットした場合は、 ex/vi は環境変数 TERM にこの値を設定します。

TMPDIR
    テンポラリファイルの作成される場所。 ( directory オプションを参照)

非同期イベント

SIGALRM
    vi/ex は、ファイル編集時の定期的なバックアップを行なうためと、 処理に長い時間がかかりそうな時に画面に ``busy'' のメッセージを 表示するために、このシグナルを使います。

SIGHUP

SIGTERM
    最後にファイル全体を書き込んだ後、現在のバッファを変更した場合、 後に復旧できるように編集中のファイルを保存しようと試みます。 詳細は、 vi/ex リファレンスマニュアルの ``Recovery'' のセクションを参照して下さい。

SIGINT
    この割り込みが発生した場合、現在の操作は停止され、コマンドレベルに戻ります。 テキスト入力中にこの割り込みが発生した場合は、テキスト入力を正常に終了させた かのように、ファイルに入力中のテキストを書き込みます。

SIGWINCH
    スクリーンのサイズ変更を行ないます。 詳しくは、 vi/ex リファレンスマニュアルの ``Sizing the Screen'' のセクションを参照して下さい。

SIGCONT

SIG"UIT

SIGTSTP
    vi/ex はこれらのシグナルを無視します。

関連ファイル

/bin/sh
    デフォルトのユーザシェル。

/etc/vi.exrc
    システム全体における vi のスタートアップファイル。

/tmp
    テンポラリファイルのディレクトリ。

/var/tmp/vi.recover
    デフォルトの復元ファイルのディレクトリ。

$HOME/.nexrc
    ユーザのホームディレクトリにあるスタートアップファイルで、 1 番最初に読まれるファイル。

$HOME/.exrc
    ユーザのホームディレクトリにあるスタートアップファイルで、 2 番目に読まれるファイル。

.nexrc
    ローカルディレクトリにあるスタートアップファイルで、 1 番最初に読まれるファイル。

.exrc
    ローカルディレクトリにあるスタートアップファイルで、 2 番目に読まれるファイル。

関連項目
ctags(1), more(1), curses(3), dbopen(3)

``Vi "uick Reference'' カード。

``An Introduction to Display Editing with Vi'' のセクション。 4.3BSD と 4.4BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、手に入るものの中で vi スクリーンエディタの入門書にもっとも近いものです。

``Ex Reference Manual (Version 3.7)'' のセクション。 4.3BSD と 4.4BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、 ex エディタのドキュメントで、伝統的な 4BSD と System V で配布された 最終的なリファレンスです。

``Edit: A tutorial'' セクション。 4.3BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、 ex スクリーンエディタの単純な版の入門用ドキュメントです。

``Ex/Vi Reference Manual'' セクション。 4.4BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、 nex/nvi テキストエディタのために 4.4BSD と 4.4BSD-Lite で配布された 最終的なリファレンスです。

nex/nvi ドキュメントの roff ソース。 これらは nex/nvi のソースコードが置かれているディレクトリの nvi/USD.doc ディレクトリの中に一緒に配布されています。

nex/nvi のソースコードが置かれている nvi/docs/internals ディレクトリの ``autowrite'', ``input'', ``quoting'', ``structures'' といったファイル群。

歴史
ex/vi エディタに代わる nex/nvi コマンドは、4.4BSD から登場しました。

規格
nex/nvi は、IEEE Std1003.2 (``POSIX'') に近いです。 この文書は、幾つかの点で従来の ex/vi の実際の動作とは異なります。 nex/nvi には、両方の面に則って作られたという違いがあります。