名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 環境 | 終了ステータス | ファイル | 属性 | 関連項目 | 作者 | 注意事項
ex ユーティリティはエディタ群 ex と vi のもとになるエディタで、ed のスーパーセットです。ed と比較すると、画面上での編集用に優れた拡張機能が備わっています。画面中心のテキスト編集は vi が目的とする機能です。
CRT 端末を使っているユーザーは、画面上でテキストを編集することが多く、その場合には ex の画面編集機能である vi(1) を使ってください。
ed を使った経験のあるユーザーは、ex では ed のすべてのコマンドがサポートされているばかりでなく、CRT 端末上で便利なさまざまな機能が備わっていることに気づくはずです。インテリジェント端末や高速端末では vi でも十分に便利な機能を果たせます。一般的に言えば、ex エディタは ed と比べて端末の機能を引き出すことができます。端末機能データべース ( terminfo(4) を参照 ) を参照し、さらに環境変数 TERM が示す端末タイプを参照して、端末を効率よく使う方法を決定します。ex エディタでは、その画面上テキスト編集機能である visual コマンド (vi と略すことが可能) が持つ文字や行の挿入/削除といった機能を利用することができます。この処理モードは、vi コマンドを使用する際の中心的なモードです。
ex ユーティリティには、ファイル中のテキストを簡単に画面表示するための便利な機能が用意されています。たとえば z コマンドにより、テキストのウィンドウへ容易にアクセスできます。また ‸D (CTRL-D) はウィンドウ半分だけテキストをスクロールするもので、改行キーを押す方法よりも簡単にファイルの内容を見ることができます。もちろん画面主導の visual モードも使用でき、これにより編集中のテキストにアクセスできます。
入力操作を誤ってしまった場合、ex ユーティリティには便利な補助機能が用意されています。undo (u) コマンドは、誤って実行してしまった変更処理 (1 つ) を取り消して元の状態に戻します。ex はユーザーに対して様々なフィードバックを行います。変更された行の内容を出力したり、またあるコマンドが多くの行の内容を変更した場合にその旨をユーザーに知らせます。これにより、予期していなかった行にまでコマンドが影響を与えてしまった場合、ユーザーはただちにそれを発見できます。
また本エディタは通常、現在編集中のもの以外のファイルへの上書きを抑止します。したがって、誤って別のファイルに書き込んでしまうというミスを防ぐことができます。システムやエディタがクラッシュしたり、ユーザーが誤って電話を切ってしまった場合でも、エディタの recover コマンド (または -r file オプション) を使えば作業を再開できます。このため、作業が中断した地点よりも数行ほど戻るだけで済みます。
さらに、複数のファイルを同時に扱うための機能も ex ユーティリティには備わっています。コマンド行上でファイルの 並びを指定し、next (n) コマンドを実行すれば順番にファイルが処理されます。next コマンドに対して、処理の対象とする一群のファイルを指定するために、ファイル名のリストやシェルが扱うようなパターンを与えることができます。エディタにおけるファイル名は、完全シェル・メタシンタクスで表されるのが 通常です。メタキャラクタ % を使ってファイル名を定義することも でき、現ファイルの名前に置き換えられます。
エディタには、ASCII の小文字 (a–z) からなる名前を持つバッファが備わっています。ユーザーはテキストをバッファに書き込み、後でファイル中の他の位置へそのテキストを挿入することができます。edit (e) コマンドを使って別の新たなファイルの 編集を開始しても、バッファの内容は以前のまま残されます。
ex には、最後に実行した置換 (substitute) コマンドを繰り返すための & コマンドが用意されています。また確認付き置換コマンドもあります。特定の範囲の中で置換を行うよう指示すると、エディタは 個々の該当箇所について実際に置換してよいか否かを問い合わせる、いわゆる対話型置換を実行します。
検索/置換処理において、大文字と小文字は同一とみなすよう指示することも できます。また語のマッチング用に正規表現を指定することも可能です。この便利な機能を使うと、たとえば検索対象として "edit" と 指定したとき、"editor" という語も検索できます。
ex が提供するオプションは、ユーザーが自分の希望に合わせて設定できます。便利なオプションの例として autoindent があります。これは自動インデントを行うもので、各行の先頭に空白を置いて 自動的にテキストをインデントします。表示されたテキストに対して、‸D により後方へのタブを行なったり、空白文字やタブキーを入力したりして行の位置を変更できます。
その他の便利な機能としては、連結した行の間に自動的に空白を挿入する join (j) コマンド、複数の行を一度にシフトする < および > コマンド、さらに sort などのコマンドを通じてバッファの一部を フィルタする機能などがあります。
以下のオプションを指定できます。
ユーザーへのすべての対話型フィードバックを抑止します。エディタスクリプト実行中に便利なオプションです。
LISP を編集するための設定を行います。
エディタもしくはシステムのクラッシュ発生によって保存された全ファイルの名前を表示します。
読み取り専用モード。readonly フラグがセットされ、ファイルの上書きは不可能となります。
エディタもしくはシステムのクラッシュが発生した後で、file が示すファイルを編集します。つまりクラッシュ発生時にバッファ中にあったバージョンを復元します。
tag が示すタグを含むファイルを編集します。そのタグが定義されている地点が編集開始地点となります。
vi を使った編集の画面表示を開始します。単に vi コマンドを入力しても同様に実行できます。
冗長。ex コマンドを標準入力で読み込んだ場合、入力は標準エラーに表示されます。シェルスクリプトの ex コマンド実行時に役に立ちます。
暗号化オプション。X コマンドと同様にキーの入力をユーザーに要求します。このキーにより、暗号化と復号化が crypt コマンドのアルゴリズムを使って実行されます。X コマンドは、その高度な推定能力を使って、読み込まれたテキストが暗号化 されているか否かを判定します。一時バッファのファイルも、この -x オプション用にユーザーが入力したキーから生成した別バージョンのキーを使って暗号化されます。
ウィンドウサイズのデフォルト値を n に設定します。低い回線速度でエディタを使用する場合に便利なオプションです。
暗号化オプション。上記 -x オプションと同様ですが、唯一の違いは X コマンドの代わりに C コマンドを実行する点です。この両コマンドの違いは、C コマンドでは読み込まれたテキストは暗号化されているものと無条件にみなされるという点です。
command で示したエディタコマンドを冒頭に実行して編集処理を開始します。通常は、検索または位置指定用のコマンドが用いられます。
-t tag と -c command の 2 つのオプションがともに指定された場合は、-t tag の方が先に処理されます。つまりタグを含んだファイルが -t により選択され、その後でコマンドが実行されます。
これが通常もしくは初期の状態です。“:” がプロンプトとして表示され、入力が可能になっています。行削除文字の入力によりコマンドの一部を取り消すことができます。
a、i、または c の入力によりこの状態になり、任意のテキストを入力できます。この状態を終了させるには、ピリオド (.) だけからなる行を入力するか、あるいは割り込みを発生させます。後者の場合には異常終了となります。
vi と入力するとこの状態になり、Q または ‸\ (CTRL-\) と入力すると終了します。
abbrev | ab | map | set | se | |
append | a | mark | ma | shell | sh |
args | ar | move | m | source | so |
change | c | next | n | substitute | s |
copy | co | number | nu | unabbrev | unab |
delete | d | preserve | pre | undo | u |
edit | e | p | unmap | unm | |
file | f | put | pu | version | ve |
global | g | quit | q | visual | vi |
insert | i | read | r | write | w |
join | j | recover | rec | xit | x |
list | l | rewind | rew | yank | ya |
以下に示すすべての ex コマンドにおいて、数値を表す count と範囲を表す range の両方が指定され、ともに有効な場合、対象となる行の数には、範囲ではなく数値の方が用いられます。コマンドの開始行は、範囲が表す先頭の行となります。
ab[brev] word rhs
[line] a[ppend][!]
ar[gs]
[range] c[hange][!] [count]
chd[ir][!] [directory]; cd[!] [directory]
[range] co[py] line [flags]; [range] t line [flags]
[range] d[elete] [buffer] [count] [flags]
e[dit][!] [+line][file]; ex[!] [+line] [file]
f[ile] [file]
[range] g[lobal] /pattern/ [commands]; [range] v /pattern/ [commands]
[line] i[nsert][!]
[range] j[oin][!] [count] [flags]
[range] l[ist] [count] [flags]
map[!] [x rhs]
[line] ma[rk] x; [line] k x
[range] m[ove] line
n[ext][!] [file ...]
[range] nu[mber] [count] [flags]; [range] # [count] [flags]
[line] o[pen] /pattern/ [flags]
pre[serve]
[range] p[rint] [count] [flags]
[line] pu[t] [buffer]
q[uit][!]
[line] r[ead][!] [file]
rec[over] file
rew[ind][!] Set se[t] [option[=[value]]...] [nooption...] [option?...] [all]
sh[ell]
so[urce] file
[range] s[ubstitute] [/pattern/repl/[options] [count] [flags]]
su[spend][!]; st[op][!]
ta[g][!] tagstring
una[bbrev] word
u[ndo]
unm[ap][!] x
[line] vi[sual] [type] [count] [flags]
[range} w[rite][!] [>>] [file]; [range} w[rite] [!] [file]; [range} wq[!] [>>] [file]
[range] x[it][!] [file]
[range] ya[nk] [buffer] [count]
[line] z [type] [count] [flags]
! command [range]! command
[range] < [count] [flags]
[range] > [count] [flags]
[range] & [options] [count] [flags]; [range] s[ubstitute] [options] [count] [flags]; [range] ~ [options] [count] [flags]
EOF
[line] = [flags]
@ buffer; * buffer
n | n 番目の行 | /pat | pat に一致する次の行 |
. | 現在行 | ?pat | pat に一致する前の行 |
$ | 最終行 | x-n | x 番目の行の n 行前 |
+ | 次の行 | x,y | x 番目の行からy 番目の行まで |
– | 前の行 | 'x | 文字x でマークされた行 |
+n | n 行後 | '' | 直前にいた行 |
% | 1,$ |
EXINIT | set による設定を格納する環境変数 |
$HOME/.exrc | エディタ初期化ファイル |
./.exrc | エディタ初期化ファイル |
set x | x オプションを有効とする |
set nox | x オプションを無効とする |
set x=val | x オプションの値を val とする |
set | 変更されたオプションを表示 |
set all | 全オプションを表示 |
set x? | x オプションの値を表示 |
autoindent | ai | インデントを自動挿入 |
autowrite | aw | 変更を加える前にファイルの内容を書き出し |
directory | 一時作業ファイル用ディレクトリのパス名 | |
exrc | ex | vi/ex が現在のディレクトリ中の .exrc を読み込めるようにする。本オプションはEXINITシェル変数もしくは$HOMEディレクトリ中の.exrcファイルに設定される。 |
ignorecase | ic | 検索時に大文字/小文字の違いを無視 |
list | タブに対しては ‸I を、行末には$ を出力する | |
magic | パターン中の . [ * を特別な意味を持つと解釈 | |
modelines | 先頭と最後の5 行ずつは、その形式が | |
ex:command: または vi:command: | ||
であれば、vi/ex コマンドであると解釈して実行 | ||
number | nu | 行番号を付加 |
paragraphs | para | パラグラフを開始するマクロ名 |
redraw | 高度機能の端末のシミュレート | |
report | 最後に実行したコマンドが report 変数の値を超える数の行を更新した場合にその旨を通知 | |
scroll | コマンドモード行 | |
sections | sect | セクションを開始するマクロ名 |
shiftwidth | sw | <、>、または ‸D に対するシフト数 |
showmatch | sm | 入力された ) と }に対応する ( と{ を示す。 |
showmode | smd | vi における挿入モードを表示 |
slowopen | slow | 挿入時の更新の中止 |
term | vi に対して使用中の端末のタイプを指定 | |
デフォルトは環境変数 TERM が示す値 | ||
window | ビジュアルモード行 | |
wrapmargin | wm | 行の自動分割 |
wrapscan | ws | 検索の際バッファの終端 (または先頭) で止まらない。 |
ex の実行に影響を与える環境変数 HOME
、 PATH
、SHELL
、 TERM
、 LC_COLLATE
、 LC_CTYPE
、 LC_MESSAGES
、 NLSPATH
についての詳細は、 environ(5) を参照してください。
COLUMNS
システムが選択した値の代わりに用いる、画面の水平方向のサイズ値を 指定します。
EXINIT
エディタの開始時に、最初のファイルの読み込み前に実行する ex コマンドを定義します。複数のコマンドを記述する場合には、縦線 (|) で区切ってください。
LINES
システムが選択した値の代わりに用いる、画面の垂直方向のサイズ値を指定します。画面全体の行数、およびビジュアルモードでの 垂直画面サイズとして用いられます。
エディタの一時ファイル
名前付きバッファ用一時ファイル
保存 (preserve) コマンド
復旧 (recover) コマンド
エラーメッセージ
端末の機能ファイル
保持ディレクトリ ( login は当該ユーザーのログイン ID )
エディタ初期化用ファイル
エディタ初期化用ファイル
次の属性については attributes(5) のマニュアルページを参照してください。
ed(1), edit(1), grep(1), sed(1), sort(1), vi(1), curses(3CURSES), term(4), terminfo(4), attributes(5), environ(5), standards(5)
vi と ex ユーティリティは、米国カリフォルニア州バークレー市にあるカリフォルニア大学のコンピュータサイエンス 学部、電子技術・コンピュータサイエンス学科が開発したソフトウェアにもとづいています。
オプションの中には、サポートされ続けてはいるものの、マニュアル上ではコマンド構文標準 (intro(1) を参照) に準拠している他のオプションに置き換わっているものがあります。たとえば – オプションは -s に変わっています。また引数指定可能な -r オプションは、-L に変わっています。さらに +command は -c command に変わっています。
ファイルが読み込まれたときに、メッセージ file too large to recover with -r option が表示されることがあります。これは、このファイルの編集および保存はできるが、万一編集内容が失われた場合に、-r オプションで回復できないことを意味します。
z コマンドが出力する行数は、物理的ではなく論理的な値です。したがって長い行が存在すると、出力の量は 1 画面分を超えてしまうことがあります。
コマンド行で -s オプションが指定されていると、ファイル入出力エラーが発生しても名前は表示されません。
編集環境は構成用オプションにデフォルトで設定されています。編集作業を開始するとき、ex は EXINIT 環境変数を読み込もうとします。変数が定義されていればエディタは EXINIT の値を使い、定義されていなければ $HOME/.exrc 中に設定された値を使います。$HOME/.exrc がなければ、デフォルト値を使います。
$HOME 以外の現ディレクトリにある .exrc のコピーを使う場合は、EXINIT または $HOME/.exrc の中の exrc オプションを設定してください。exrc を EXINIT または $HOME/.exrc 中で設定すれば、EXINIT で設定されているオプションをローカルな .exrc で無効にすることができます。
大文字/小文字の区別をしないで単一の検索を行う簡単な方法はありません。
名前付きバッファ中にテキストがあり、エディタ終了以前にそのテキストが使用されなくとも、エディタは警告を発しません。
入力ファイル中の NULL 文字は捨てられます。結果として生成されるファイル中には現れません。
標準の Solaris バージョンの ex は、いずれは POSIX.2 に準拠したバージョンに置き換えられます ( standards(5) を参照 )。アドレス指定や機能で ex ファミリを使用するスクリプトは、これらのユーティリティの /usr/xpg4/bin バージョンを使ってください。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 環境 | 終了ステータス | ファイル | 属性 | 関連項目 | 作者 | 注意事項