本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 1 : ユーザーコマンド (A~M) > e

ex(1)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

ex, edit ― 行指向の拡張テキストエディタ

構文

ex [-] [-l] [-r] [-R] [-t tag] [-v] [-w size] [-x] [-C] [+ command] [file ...]

XPG4 構文

ex [-rR] [-s | -v] [-c command] [-t tag] [-w size] [file ...]

旧式のオプション

ex [-rR] [-| -v] [+command] [-t tag] [-w size] [file ...]

edit [-] [-l] [-r] [-R] [-t tag] [-v] [-w size] [-x] [-C] [+ command] [file ...]

注釈

プログラム名 ex, edit, vi, view, および vedit はそれぞれ、同一プログラムの別版です。 本書の項目では、 ex/edit の動作について説明します。 多くの HP-UX やその他の類似システムでは、 eex と同じです。

説明

ex プログラムは、スクリーン指向のエディット (vi(1) を参照) もサポートした行指向のテキストエディタです。

(XPG4 のみ) 特定のブロックモードの端末には、 visual モードや open モード のフルスクリーンエディタ コマンドのように、完全な ex 定義をサポートするために必要なすべての機能がありません。 これらのコマンドを端末でサポートできないときは、 「エディタコマンドではありません」のようなエラーメッセージも 構文エラーのリポートも生成しません。

edit プログラムは ex と同じですが、初心者や一時的なユーザーにエディタを使いやすく するためにエディタオプションのデフォルトに一部変更がなされている 点が異なります (以下の「エディタオプション」を参照)。

オプションと引き数

ex は以下のコマンド行オプションおよび引き数を認識します。

- 

(旧式) 対話型のユーザーフィードバックをすべて行わないようにします。 これは、エディタコマンドがスクリプトからとられるときに有効です。

-s  

(XPG4 のみ)

対話型のユーザーフィードバックをすべて抑制します。 これは、エディタコマンドをスクリプトから参照するときに使用できます。

TERM の値と処理系ターミナルタイプを無視します。そして、端末が ビジュアルモードを サポートできないタイプと仮定します。

環境変数 EXINIT の使用と .exrc ファイルの解釈を抑制します。

-l 

lisp エディタオプションをセットします (以下の「エディタオプション」を参照)。

-r 

エディタまたはシステムのクラッシュの後、指定された files を回復します。 file の指定がなければ、セーブしたファイルすべてのリストがプリントされます。 ファイルを回復するには、セーブしたファイルの所有者でなければなりません。(スーパーユーザーは、他のユーザーが所有するファイルを回復することはできません)。

-R 

不用意にファイルをオーバライトするのを防止するために 読み出し専用 エディタオプションを設定します (以下の「エディタオプション」を参照)。

-t tag 

(XPG4 のみ) 指定した tag を含むファイルを編集し、 最初のコマンドが :tag tag として続きます。 -t tagta コマンドで示すタグはオプションです。 この機能は、 ctags 適合を実現しているシステム上で提供しています。 提供していないシステムでは、 -t の使用は未定義の結果をもたらします。

tag tag コマンドを実行し、定義済みファイルをロード、位置決めします。 コマンドの説明にある tag コマンド、および以下の「エディタオプション」 にある tags エディタオプションを参照してください。

-v 

ビジュアルモード (vi) を呼び出します。

-w size 

window エディタオプションの値を size に設定します (以下の「エディタオプション」を参照)。 size を省略すると、デフォルトは 3 になります。

-x 

暗号化モードをセットします。 暗号化ファイルの作成またはエディットを始めるためのキーを求められます (以下の「コマンドの説明」にある crypt コマンドを参照)。

-C 

暗号化オプション。 読み込まれた全テキストを暗号化されているものとみなす以外は、 -x オプションと同じです。

-c command 

(XPG4 のみ)

+command 

(旧式) 指定した ex の検索またはジャンプを行う command を実行することによってエディットを始めます。

file  

はエディット対象の単一または複数のファイルを指定します。 file を指定すると、ファイルは与えられた順序で処理されます。 -r オプションも指定すると、 ファイルは回復エリアから読み出されます。

(XPG4 のみ) -t tag-c command オプションを両方とも指定すると、 -t tag を最初に処理します。 つまり、タグを含むファイルが -t で選択され、次にコマンドが実行されます。

定義

カレントファイルex によってエディットされているファイルを、 カレントファイルといいます。 カレントファイル内のテキストはワークエリアに読み込まれ、 エディットした変更はすべてこのワークエリアに対して行われます。 変更は、ワークエリアが明示的にファイルに書き戻されるまで 元のファイルに影響を与えません。 % 文字をファイル名として使用すると、 それはカレントファイル名に置き換えられます。

代替ファイル。 代替ファイル とは、エディタコマンドで直前に表示したファイル名、 または直前に表示したファイルがカレントファイルになる場合には その前のカレントファイル名です。 # 文字をファイル名として使用すると、それは代替ファイル名で置き換えられます。

バッファa から z までの 26 個の名前付きバッファは、編集時にテキストブロックをセーブすることに使用できます。 バッファ名を大文字で指定すると、テキストは、既存のバッファの内容をオーバライトするのではなく、これに追加されます。

読み出し専用フラグ読み出し専用 フラグは、 noreadonly エディットオプションを設定することによってエディタの中からクリアできます (以下のエディットオプションを参照)。 readonly フラグがセットされているときでも、別の名前のファイルへの書き出しは 許されます。 また、書き込みコマンドの後に ! を使って、書き込みを 読み出し専用 ファイルに強制することができます (以下の「コマンドの説明」にある write コマンドを参照 )。

割込み。 割込みシグナルが受信されると、キーボードからコマンドが与えられている場合には、 ex はコマンドモードに戻ります。 エディタコマンドがファイルから得られる場合には、割込みシグナルにより、 ex は打ち切られます。

システムクラッシュ。 内部エラー、または予期しないシグナルのためにシステムがクラッシュ、または ex が中断された場合、書き込んでいない変更があれば、 ex ワークエリアを保存しようとします。保存された変更を読み出すには、 -r コマンド行オプションを使用してください。

コマンドモード / 入力モードex はコマンドモードで起動し、 これはコロン (:) プロンプトによって示されます。 ex は、 append, change, または insert コマンドがあると常に入力モードに切り換わります。 入力モードを終了してコマンドモードに戻るには、行の先頭でピリオド (.) だけをタイプします。

コメント。 引用符で始まる行 ("\c ) は無視されます (これはエディタスクリプトにコメントを入れるのに便利です)。

複数のコマンド は、縦線文字 (|) で区切ることによって 1 行に結合することができます。 ただし、グローバルコマンド、コメント、およびシェルエスケープ コマンドは | 文字で終えることができないため、行の最後のコマンドでなければなりません。

アドレス指定

(XPG4 のみ) ex でのアドレス指定は現在の行に対応しています。 一般的に、現在の行がコマンドの影響を受けた最後の行です。 現在の行に対する正確な影響は、各コマンドの記述で説明してます。 バッファに 1 行もないときは、現在の行は、 0 に設定さます。

ex は次の行アドレス形式を認識します。

. 

ドットまたはピリオド (.) は現在の行を参照します。 常に、その位置が明示的な移動コマンドの結果か、または複数の行に影響を与える コマンドの結果 (この場合は、通常最後に影響を受けた行) となる可能性のある 現在の行があります。

n  

ワークエリアにおける n 番目の行。行には、行 1 から始めて連続に番号が付けられます。

$ 

ワークエリアにおける最終行。

% 

1,$ の省略形で、ワークエリア全体を意味します。

+n, +[+]... 

-n, -[-]... 

現在の行、または専攻する行指定に相対的なオフセット。 + は前方を意味します。 - は逆方向を意味します (例えば、形式 .+3, +3, および +++ は等価です)。

/re/ 

?re? 

パターン re の入っている行で、順方向 (/) または逆方向 (?) に走査します。 後ろに付ける / または ? は、その行だけが表示される場合は省略可能です。 re を省略すると、 ex は、走査文字列または置換え文字列の最新のセットを使用します (以下の「正規表現」を参照)。

'x 

行は、 1 文字の ASCII 小文字英字を使ってマークできます (以下の「コマンドの説明」にある mark コマンドを参照)。 'x は、 x でマークされた行を参照します。 さらに、前の現在行は非相対移動の前にマークされます。 この行は、 x' を使用して参照できます (したがって、 '' は前の現在行を参照します)。

(XPG4 のみ) コマンドには、0 個か 1 個か 2 個のアドレス指定が必要です。 アドレスを必要としないコマンドは、アドレスがあるとエラーとみなされます。

(XPG4 のみ) range の隣接したアドレスは、それぞれをコンマ (,) またはセミコロン (;) で区切ります。 セミコロンで区切った場合は、現在の行 (.) が最初のアドレスに設定され、2 番目のアドレスはそこから算出されます。 この機能が、常に前方および後方検索の開始行を決定します。 2 個並んだアドレスのうちの 2 番目のアドレスは、最初の行に対応しています。 最初のアドレスは 2 番目のアドレス以下のアドレスになります。 最初のアドレスは編集しているバッファの開始行以上のアドレスになり、最後のアドレスは編集しているバッファの最終行以下のアドレスになります。他の場合はいずれもエラーになります。

コマンドのアドレスは、(上記に従って指定した) 一連の行アドレスで構成され、コンマ (,) またはセミコロン (;) で区切ります。 このようなアドレスリストは左から右に評価されます。 セパレータがセミコロンの場合、現在の行は、次のアドレスが解釈される前に前の アドレス値に設定されます。 コマンドに必要以上のアドレスを与えると、最後の 1、2 個を除いてすべて無視されます。 コマンドに 2 個のアドレスが必要な場合には、ワークエリアの中で最初にアドレス指定 した行は、2 番目にアドレス指定した行より前になければなりません。 リスト内のヌル (省略) アドレスのデフォルトは現在の行になります。

正規表現

このエディタでは、常に 2 種類の正規表現文字列のコピーを保持します。 これらは、置換文字列とスキャン文字列です。置換コマンドは置換文字列を、 使用された正規表現に設定します。すべてのコマンドについて、行アドレス指定 (上記の「アドレス指定」を参照) のグローバルコマンドおよび正規表現の 両形式はスキャン文字列を、使用された正規表現に設定します。 これらの文字列は、「アドレス指定」にある global コマンド、および substitute コマンドのところに説明のあるようにデフォルト正規表現 として使用されます。

このエディタは基本正規表現 (regexp(5) を参照) をサポートしますが、以下の変更があります。

\< 

\< は「ワード」の先頭にマッチします。つまり、マッチした文字列の先頭は 英字、数字、またはアンダラインでなければならず、また その文字の前は行頭か、またはそれら以外の文字でなければなりません。 この構文は通常表現 (\<word のような) の初めにのみ使用され、 (word1 \<word2) の中では使われません。

\> 

\> はワードの終端にマッチします (前のパラグラフを参照) この構文は通常表現 (word\> のような) の終わりにのみ使用され、 (word1\> <word2) の中では使われません。

~ 

最後の substitute コマンドの置換部分にマッチします。

[string] 

基本正規表現によって定義される大かっこ表現内の位置の引用は、 大かっこ表現の特殊文字を引用するためのバックスラッシュ (\) の使用によって置換されます。

nomagic 

エディタオプション nomagic がセットされていると、特別な意味を持つ唯一の文字は パターン先頭の ^ 、パターン末尾の $ 、および \ です。 文字 .、 *、 [, 、および ~ は、 \ でエスケープしない限り その特殊な意味を失います。

置換文字列

置換文字列内にある文字 & は、置換されるパターンにマッチしたテキストを表します。 nomagic エディタオプションをセットしない場合は、 \& を使用してください。

文字 ~ は、前の substitute コマンドの置換部分に置換されます。 nomagic エディタオプションをセットしない場合は、 \~ を使用してください。

n が整数のとき、 シーケンス \n は、 n 番目のかっこ \(および \) の 組で囲まれるサブパターンにマッチするテキストによって置換されます。

シーケンス \u (\l) により、置換文字列における直後の文字が英字ならば大文字 (小文字) に変換します。 シーケンス \u (\L) は、 シーケンス \E または \e に出会うか、またはその置換文字列の終端に達するまで大文字/小文字の変換をオンにします。

コマンド名と省略形

以下の表に、行モードのコマンドを要約します。 名前がかっこで囲まれているコマンドは、省略形でのみ 使用できます。

コマンド省略形コマンド省略形コマンド省略形
abbreviateabnextntagta
appendanumbernu #unabbreviateuna
argsaropenoundou
changecpopunmapunm
chdirchd cdpreservepreversionve
copyco tprintpvisualvi
cryptcr Xputpuwritew wq
deletedquitqxitx
edite exreadryankya
filefrecoverrec  
globalg vrewindrew(実行バッファ)* @
insertisetse(行番号)=
joinjshellsh(左シフト)<
listlsourceso(右シフト)>
mapstopst ^Z(スクロール)^D
markma ksubstitutes sr &~(シェルエスケープ)
!     
movemsuspendsu ^Z(ウィンドウ)z

コマンドの説明

以下のコマンドの説明では、頻繁に現れる引き数があります。 それらを以下に説明します。

line  

上記の「アドレス指定」で説明した任意の形式による 1 行アドレス。 デフォルトは現在の行です。

range  

上記の「アドレス指定」で説明したコンマまたはセミコロンで区切った 1 行アドレスのペア。 デフォルトは現在の行です (.,.)。

count  

コマンドによって影響を受ける行数を指定する正の整数です。 デフォルトは 1 か、または range における行数です。

count を指定すると range は無効になります。 かわりに、コマンドの対象とする最初の行を指示するには 1 つの行番号だけを指定しなければなりません。 (範囲を指定すると、その範囲の最後の行がそのコマンドの 開始行として解釈されます。)

flags  

#, p, および l のうちの 1 文字以上の文字です。 コマンドの完了後、行のプリントに対応するコマンドが実行されます。 任意個数の + または - 文字もこれらのフラグに与えることができます。 デフォルトはフラグなしです。

これらの修飾子は、すべてオプションです。

line または range だけを (ヌルコマンドで) 指定するとき、暗黙のコマンドは print です。ヌル行を入力すると、次の行がプリントされます (.+1p と等価です)。

buffer 

XPG4 機能。 テキストを保存するいくつかの名前付き領域のひとつです。 この名前付きバッファは、 POSIX ロケールの小文字で指定します。 buffer を指定すると、コマンドにより影響を受けるテキスト領域を、 コマンドにより影響する前のバッファとして保存します。 この引き数は、 put コマンドやビジュアルモードの "put" コマンド (p および P) を使用し、挿入するテキストのバッファを指定することもできます。

バッファ名を大文字で指定したり、バッファを変更する場合は、 そのバッファは上書きされるのではなく追加されます。 バッファを変更しない場合は、 バッファ名を大文字で指定しても小文字で指定しても同じ結果になります。 また、バッファを指定せずにすべてのテキストを削除したり記憶するための格納場所として、名前のないバッファが 1 つあります。

ビジュアルモードからのみアクセスできる 1 から 9 まで番号付けされたバッファもあります。 ビジュアルモードにおいて削除したテキストを名前のないバッファに入れるとき、 このテキストはバッファ 1 にも入り、以前バッファ 1 に入っていたものはバッファ 2 に、 という具合にこれらのバッファが設定されます。 バッファ 9 のテキストはなくなります。 名前のないバッファに記憶されたテキストは番号付けられたバッファを変更しません。 s 番と名付けられたバッファを使ってビジュアルモードの "put" コマンドでテキストを 取り出すことは可能ですが、番号付けられたバッファにテキストを直接入れることはできません。 後述するコマンドのバッファ修飾子を使用しない場合は、名前のないバッファはデフォルトの状態になっています。

word 

XPG4 機能。 POSIX ロケールにおいて、 word は英字、数字、およびアンダースコアのシーケンスで構成されています。 そして両端は、英字、数字、およびアンダースコア以外の文字で区切られるか、 単語またはファイルの先頭と終端で区切られます。 ! の文字をコマンドに追加して、各コマンドの詳細説明のとおりに操作を変えることができます。

countrange の両方を指定したコマンドを使用する場合は、影響する行数は range ではなく count の値になります。 コマンドの開始行は、指定された範囲の先頭行になります。

linerange だけがコマンドなしで指定された場合は、暗黙的にコマンドは printlist、 あるいは number (pl、 あるいは #) のどれかとなります。 選択されるコマンドは 3 つのコマンドのうち最後に使用したものです。 範囲や行数を指定せず、コマンド行が空白行の場合は、現在の行が対象となり、 現在の行には .+1 が設定されます。

アドレス、行数あるいはコマンド名のすぐ前か後には、0 個の文字または空白モードの文字を指定できます。 コマンド名の後ろに指定する (例えば、 bufferfile)、 アルファベットで始まるものはすべて、 少なくとも 1 つの空白でコマンドを区切る必要があります。

各コマンドのリストを以下に示します。コマンドは省略して入力できます (省略した文字列は、コマンド構文の [ の前に記述された単語です)。 完全なコマンド ([ と ] を取り除いたコマンド単語をすべての文字で示したもの)、あるいは完全なコマンドから省略したものまでの部分集合を入力できます。

abbreviate 

ab[breviate] word replacement

指定した省略形を現在のリストに追加します。 ビジュアルモードでは、入力時に word が完全なワードとしてタイプされると、これは文字列 replacement と置換されます。

append 

line a[ppend][!]

入力モードに入ります。入力テキストは指定行の後に入れられます。 行 0 を指定すると、テキストはワークエリアの先頭に入ります。 最後の入力行が現在の行になるか、または行が入力されなければターゲット行になります。

! をコマンドに追加すると、これに対する autoindent エディタオプション設定を挿入専用に切り換えます。

args 

ar[gs]

引き数をプリントし、現在の引き数を [] の間に入れます。

change 

range c[hange][!] count

入力モードに入ります。入力テキストが指定行に置き換わります。 最後の入力行が現在の行になります。 行が入力されなければ、この効果は削除と同じです。

をコマンドに追加すると、これに対する autoindent エディタオプション設定を挿入専用に切り換えます。

chdir 

chd[ir][!] [directory]

cd[!] [\c 

directory]

ワークディレクトリを directory に変更します。 directory を省略すると、 環境変数 HOME の値が使用されます。最後の書き込み以降にワークエリアが変更されたか、 またはエディット対象のファイル名がスラッシュ (/) から始まらない場合、警告が発行され、ワークディレクトリは変更されません。 この場合、強制的にディレクトリを変更するには、文字 ! をコマンドに追加してください。

copy 

range co[py] line flags

range t line flags

指定した行 (range) のコピーが、指定した宛先 line の後に入ります。行 0 は、行がワークエリアの先頭に入れられるように指定します (英字 tcopy コマンドの別の省略形です)。

crypt 

cr[ypt]

X

ユーザーは、暗号化モードに入るのに使用するキーを求められます。 また、このコマンドを使用すると、前の crypt コマンド、または -x コマンド行オプションから入力されるキーを変更することもできます。 プロンプトに対してキーを与えなければ (つまり、キャリッジリターンだけを押す)、 暗号化モードは取り消され、ワークエリアは次の書き込みコマンドによって プレーンテキストの形式で書き出されます。

暗号化モードのとき、ファイル入力はすべて現在のキーを使って解読されます。 ただし、入力ファイルが処理されている際、7 ビットの ASCII 文字だけの入った テキストブロック (約 1024 バイト) があると、そのテキストブロックはプレーンテキスト であるものと仮定され、解読されません。 ! シェルエスケープによって別のコマンドにパイプ接続されているもの以外のすべてのファイル出力は、現在のキーを使って暗号化されます。

エディタがワークエリアの管理に使用するテンポラリファイルは、現在の ワークエリアが廃棄され (または書き出され) て新しいファイルに対して編集が 始まるまで暗号化されません。 暗号化保護を必要とする新しいファイルを作成する場合、エディタの起動時に -x オプションを指定することによって、ワークエリアファイルも暗号化するようにしてください。

cr[ypt]

C

暗号化オプション。 読み込まれた全テキストを暗号化されてるとみなす以外は、 X コマンドと同じです。

delete 

range d[elete] buffer count

指定した行がワークエリアから削除されます。 名前付き buffer を指定すると、削除したテキストはその中にセーブされます。 バッファを指定しなければ、名前のないバッファ (つまり、デフォルトでは最後に削除または記憶したテキストが入っているバッファ) が使用されます。 削除した行がファイルの終端であった場合、新しい現在の行は、削除した行の後の行、つまりファイルの最終行になります。

edit 

e[dit][!] [+ line] file

ex[!] [+ line] file

新しいファイルのエディットを始めます (exedit コマンドの別の名前)。 現在のワークエリアが最後の書き込み以降に変更された場合、 警告がプリントされ、コマンドは打ち切られます。 この動作は、文字 ! をコマンド (e! file) に追加することによって置換することができます。 これが vi の中から実行されない限り、現在の行はワークエリアの最終行です。 これが vi の中から実行される場合、現在の行はワークエリアの先頭行になります。 +line オプションを指定すると、現在の行は指定した位置に設定されます。ただし、 line は数値 (または $ ) にするか、または /re または ?re として指定することができます。

file 

f[ile]

行数および現在位置を含めて、カレントファイル名などの情報をプリントします。

global 

range g[lobal][!] /re/ command...

range v /re/ command...

re の入っている range 内の行に対して (または range を与えなければワークエリア全体に対して) command を行います。 まず、パターン re に一致するような所定の range 内の行をマークします。 パターンを省略すると、置換え文字列、または走査文字列の最新のセットが使用されます (上記の「正規表現」を参照)。 次に、与えられた commands が、マークした行ごとに . を設定して実行されます。 / の代わりに英字または数字以外の任意の文字を使用して パターンを区切ることができます。

command は、バックスラッシュで改行をエスケープすることにより、複数行に対して指定できます。 command を省略すると、各行がプリントされます。 append, change, および insert コマンドが許されます。 これが command または複数の command で終わる場合、終了ドットは省略できます。 また、 (global コマンド自体がビジュアルモードから発行されない限り) visual コマンドも許され、ターミナルから入力をとります (command に ビジュアルモード コマンド (つまり open または visual) が含まれる場合、ビジュアルモード コマンドは、次にマークした行に進むためにビジュアルモード Q コマンドによって終わらなければなりません)。

global コマンド自体および undo コマンドは command では許されません。 エディタオプション autoprint, autoindent, および report は禁止されます。

!global コマンドに追加する (つまり、 g! ...) か、または別の名前 v を使用すると、 パターンに一致しない range 内の行に対して command が実行されます。

insert 

line i[nsert][!]

入力モードに入ります。入力テキストは指定行の前に入れられます。 最後の入力行は現在の行になるか、または行が入力されなければターゲット行の前の行になります。

! をコマンドに追加すると、これに対する autoindent エディットオプション設定を挿入専用に切り換えます。

join 

range j[oin][!] count flags

指定した行からのテキストを 1 行に結合します。 空白は、少なくとも 1 つの空白文字 (ピリオドが行の終端にある場合には 2 つ、行頭の文字がクローズ小かっこ () の場合にはなし) を与えるように調整されます。 行頭にある余分な空白は廃棄されます。

! をコマンドに追加すると、空白処理のない、より単純な結合が行われます。

list 

range l[ist] count flags

タブを ^I として表示し、各行の終端を後置の $ でマークして指定した行をプリントします (有効なフラグは、行番号に対する # だけです)。 最後にプリントした行が現在の行になります。

map 

map key|\c #\c n action

map! key|\c #\c n action

map および map! コマンドはビジュアルモードで使用するマクロを定義します。 最初の引き数 key は、一文字または多文字シーケンスが可能です。 特殊なシーケンスでは、 #n, n はファンクションキー n を参照する数字です。 特殊文字、空白、および改行を引き数内に入れるには、 ^V を使ってエスケープさせなければなりません。 key 引き数には、最初の文字としてコロン (:) を入れることはできません。また、多文字シーケンスは英文字から始めることはできません。

map によって定義されるマクロはビジュアルコマンド モードで 有効になります。 map! によって定義されるマクロはビジュアル入力モードで有効になります。 key または #n に相当するファンクションキーが入力されると、 エディタはその操作を action が入力されたものとして解釈します。

オプションのない map または map! コマンドは、相当する現在のマクロリストを表示します。

以下の「エディタオプション」にある keyboardedit, keyboardedit!, timeout, および timeoutlen エディタオプションを参照してください。

mark 

line ma[rk] x

line k x

指定した行には、指定したマーク x が与えられます。これは、1 文字の 小文字英字 (a-z) でなければなりません (x の前には、スペースまたはタブを付けなければなりません。 現在の行の位置は影響を受けません。 kmark のもうひとつの名前です。

move 

range m[ove] line

指定した行 (range) を、ターゲット line の後に移動します。 最初に移動した行が現在の行になります。

next 

n[ext][!] [ file ...]

コマンド行引き数リストの次のファイルをエディットします。 ! をコマンドに追加すると、最後の書き込み以降に変更されワークエリアについての 警告に置換されます (また、 autowrite エディタオプションが設定されていない限り変更を廃棄)。 引き数リストは、このコマンド行上で、新しい引き数リストを指定することによって置換することができます。

number 

range nu[mber] count flags

range # count flags

(# 文字は number コマンドの別の省略形) 各行の前に行番号を付けて行をプリントします (有効なフラグは、 l だけ)。 最後にプリントした行が現在の行になります。

open 

line o[pen] /re/ flags

オープンモードに入ります。 オープンモードは、1 行のウィンドウのあるビジュアルモードに類似しています。 ビジュアルモード コマンドはすべて利用できます。 line 中にオプションの正規表現に対して一致が見つかると カーソルは、マッチングパターンの先頭に置かれます。 オープンモードを終了するには、ビジュアルモード コマンド Q を使用します。詳細については、 vi(1) を参照してください。

pop 

pop[!]

タグスタックの最上部にその名前がストアされているファイルをロードし、 現在の行をストアされていた位置に設定します。 タグスタックの最上部のエントリーは削除されます。 (行モード tag コマンドまたはビジュアルモード ^] コマンドを実行すると、カレントファイルの名前がスタックに入れられます。)

! は、最後の書き出し以降に修正のあったワークエリアに関する 警告にオーバライドします。 autowrite エディタオプションをセットしていない限り、行った変更はすべて 捨てられます。

preserve 

pre[serve]

システムがクラッシュしたときのように、現在のエディタのワークエリアがセーブされます。 このコマンドは、緊急時、例えば書き込みが機能せず、他のどんな方法でもワークエリアをセーブできないときに使用します。 ファイルを回復するには -r コマンド行オプションを使用します。 ファイルが保存されると、メールメッセージがユーザーに送られます。 そのメッセージには、ファイル名、保存した時刻、およびファイルを回復するための ex コマンドが入っています。 その他の情報がメッセージに含まれる可能性もあります。

print 

range p[rint] count

非プリント文字を形式 ^x の制御文字とし、指定行をプリントします。 DEL は ^? として表されます。 最後にプリントした行が現在の行になります。

put 

line pu[t] buffer

line の後に削除または ” 記憶 ” した行を入れます。 バッファは指定できます。 指定がなければ、名前のないバッファ (つまり、デフォルトでは削除または記憶したテキストが入っているバッファ) が復元されます。 現在の行は復元した最初の行に設定されます。

quit 

q[uit][!]

エディットを終了させます。 最後の書き込み以降にワークエリアが変更された場合には警告がプリントされ、コマンドは異常終了します。 変更を保存せずに強制的に終了するには、 ! をコマンドに追加してください。

read 

line r[ead] file

ターゲット行 (先頭にテキストを入れるには行 0 が可能) の後にワークエリア内で指定した file のコピーを挿入します。 file の指定がなければ、カレントファイルがデフォルトです。 カレントファイルが存在しなければ、 file がカレントファイルになります。 ビジュアルモードを除いて、最後に読み込んだ行が現在の行になります。 ビジュアルモードでは、最初に読み込んだ行が現在の行になります。

file が、 !string として与えられると、 string は、システムコマンドとして解釈され、コマンドインタプリタに渡されます。 生成される出力はワークエリアに読み込まれます。 空白またはタブの前には ! を付けなければなりません。

recover 

rec[over][!] file

偶然のハングアップまたはシステムクラッシュ後に、セーブ領域から file を回復します。 最後の書き込み以降に現在のワークエリアが変更された場合には、警告がプリントされ、コマンドは打ち切られます。 この動作は、文字 ! をコマンドに追加することにより、 (rec! file) 置換することができます。

rewind 

rew[ind][!]

引き数リストは巻き戻され、リストにある最初のファイルがエディットされます。 これは命令としての現在の引き数リストを指定した next コマンドと同じです。 現在の行が最後に書き込んだときから変更されている場合は、 警告が表示されてコマンドの実行は中止されます。 ! を追加することによってあらゆる警告を無効にすることもできます。 現在の行位置はエディタオプションの autowritewriteany により影響されます。

set 

se[t] [all]

se[t] [no]boolean-option?

se[t] value-option[?]

se[t] boolean-option

se[t] noboolean-option

se[t] value-option=value

エディタオプションを設定、表示します (以下の「エディタオプション」を参照)。

引き数を付けないと、 コマンドは、その値がデフォルト値から変更されているエディタオプション をプリントします。 all を指定すると、現在のオプションの値をすべてプリントします。

第 2 および第 3 の形式は指定オプションの現在の値をプリントします。 ? は論理値のオプションにのみ必要です。

第 4 の形式は論理値のオプションをオンにします。 第 5 の形式は論理値のオプションをオフにします。

第 6 の形式は文字列および数値のオプションに値を代入します。 文字列におけるスペースおよびタブは、その前にバックスラッシュ (\) を付けてエスケープさせなければなりませせん。

最後の 5 つの形式は併用できます。解釈は左から右となります。

shell 

sh[ell]

shell エディタオプションで指定されるコマンドインタプリタを実行します (以下の「エディタオプション」を参照) コマンドインタプリタを終了すると、エディットに戻ります。

source 

so[urce] file

指定した file からコマンドを読み込んで実行します。 このコマンドはネストすることが可能です。 ネストをサポートする深さの最大値は定義された実現方法によって異なりますが、最低 1 つはサポートしています。

substitute 

range s[ubstitute] /re/repl/ options count flags

range s options count flags

range & options count flags

range sr options count flags

range ~ options count flags

range s\?repl

range s\&repl

指定した各行で、パターン re の最初のインスタンスが文字列 repl で置換されます (上記の「正規表現」および「置換え文字列」を参照)。 / の代わりに、英字または数字以外の任意の文字を使用して パターンを区切ることができます。

g (global) オプションを含めると、 その行にあるそのパターンの全インスタンスが置換されます。

c (confirm) オプションを含めると、 以下のように個々の置換えごとに実行するかどうか尋ねられます。 各置換えの前に、 置換え対象のパターンに脱字符号 (^) を付けてその行が表示されます。 置換えを行うには y を入力します。 それ以外のものを入力すると中断します。 最後に置換された行が現在の行になります。

置換えパターン re (s//repl/) と、置換え文字列または走査文字列の最新のセットが使用されます (上記の「正規表現」を参照)。

s または & の形式を使用すると、置換えパターンのデフォルトは前の置換え文字列になり、置換え文字列のデフォルトは、前に使用した置換え文字列になります。

sr または ~ の形式を使用すると、置換えパターンのデフォルトは、置換え文字列または走査文字列の最新のセットになり、置換え文字列のデフォルトは前に使用した置換え文字列になります。

形式 s\?repl は、 s/scan-re/repl/ と等価です。ただし、 scan-re は前の走査文字列です。

形式 s\&repl は、 s/subs-re/repl/ と等価です。ただし、 subs-re は前の置換え文字列です。

suspend 

su[spend][!]

stop 

st[op][!]

susp

エディタのジョブを一時停止し、元のシェルに戻ります。 stop および suspsuspend に等価です。 susp はユーザープロセス制御一時停止文字で、通常は文字 ^Z ASCII SUB ) です (stty(1) を参照)。 呼び出し元のシェルがジョブ制御をサポートしないか、または実行不可能としている場合には、このコマンドは実行不可能となります。

autowrite エディタオプションが設定され、 readonly エディタオプションが設定されず、最後の書き込み以降にワークエリアが変更された場合、 ワークエリアは、エディタが一時停止する前にカレントファイルに書き出されます。 このアクションに置き換えるには、 ! 文字を suspend または stop コマンドに追加してください。

tag 

ta[g][!] tag

tag のタグ定義が見つかるまで、 tags エディタオプション (以下の「エディタオプション」を参照) で指定されたファイルを順々に検索します。 tag が見つかると、対応するファイルをワークエリアに読み込み、 タグ定義で指定されるアドレスに現在の位置を設定します。

新しいファイルがカレントファイルと異なっており、 autowrite エディタオプションがセットされており、 readonly エディタオプションがセットされておらず、最後の書き出し以降にワークエリアが 変更を受けている場合は、新しいファイルがロードされる前にワークエリアは カレントファイルに書き出されます。このアクションに置き換えるには、 ! 文字をコマンドに追加してください。

tagstack エディタオプションがセットされている場合、 後の行モード pop コマンドまたはビジュアルモード ^] コマンドの再呼び出しに備えて カレントファイルの名前および行番号がタグスタックにプッシュされます。

unabbreviate 

una[bbreviate] word

省略形のリストから word を削除します (上記の abbreviate コマンドを参照)。

undo 

u[ndo]

前のエディットコマンドによって行われた変更を取り消します。 この目的のために、 global および visual は、単一のコマンドであるものと解釈されます。 write, edit, および next などの外部環境に影響を与えるコマンドを取り消すことはできません。 undo は、 undo 自体を取り消すこともできます。

unmap 

unm[ap][!] key

key のマクロ定義が削除されます (上記の map コマンドを参照)。

version 

ve[rsion]

現在のエディタのバージョン情報をプリントします。

visual 

line vi[sual] type count flags

指定した line でビジュアルモードに入ります。

type は、 画面のウィンドウ上で指定行の位置を指定するには、 z (window) コマンドの場合と同様に、 文字 +, -, ., または ^ のいずれかが可能です デフォルトは、画面のウィンドウの最上部に行を入れること。

count は初期ウィンドウサイズを指定します。デフォルトはエディタオプション window の値です。

フラグ # および l (エル) により、ビジュアルウィンドウにおける行が対応するモードで表示されます (number および list コマンドを参照)。

ビジュアルモードを終了するには、 Q コマンドを使用します。 詳細については、 vi(1) を参照してください。

write 

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

[range] wq[!][>>] file

指定した行 (または、 range を与えない場合はワークエリア全体) を file に書き出し、書き出された行および文字の数をプリントします。 file を指定しなければ、デフォルトはカレントファイルです (カレントファイルがなく、ファイルが指定されない場合は、 このコマンドはエラーメッセージを発行して異常終了します)。

別のファイルを指定し、そのファイルが存在する場合、 書き込みは異常終了しますが、 ! をコマンドに追加することによってこれを強行することができます。 既存のファイルに追加するには、 >> をコマンドに追加してください。 ファイルが存在しなければ、エラーがレポートされます。

ファイルが !string として指定されると、 string はシステムコマンドとして解釈されます。コマンドインタプリタが呼び出され、 指定した行はコマンドへの標準入力として渡されます。

コマンド wqw の後に q を続けることに相当します。 wq!w! の後に q を続けることに相当します。また、 wq>>w>> の後に q を続けることに相当します。

xit 

x[it][!][>>] file

ワークエリアに対して変更が行われている場合、 write コマンドは、何らかのオプション (!, >>, または file など) を write コマンドと併用して実行に移されます。 次に (いずれの場合にも) quit コマンドが実行されます。

yank 

range ya[nk] buffer count

指定した行を名前付き buffer に入れます。 バッファの指定がなければ、名前のないバッファ (つまり、デフォルトでは最後に削除または記憶したテキストが入っているバッファ) が使用されます。

(execute buffer) 

* [buffer]

@ [buffer]

buffer の内容をエディタコマンドとして実行します。 buffer は名前付きバッファの英字 (a\(miz) または * または @) とすることができます。 このコマンドの * および @ の形式は等価です。 バッファが指定されていないか、または buffer* または @ である場合、 最後に * または @ コマンドで指定されたバッファが実行されます。

(line number) 

line = flags

指定した line の行番号をプリントします。 デフォルトは最後の行です。 現在の行位置は影響を受けません。

(scroll) 

^D

次の n 行をプリントします。 nscroll エディタオプションの値です。

(shell escape) 

! command

range ! command

行の ! より後の部分をシステムコマンド インタプリタに渡して 実行させます。 最後の書き込み以降にワークエリアが変更された場合、警告が発行されます。 コマンドが完了すると、単一の ! がプリントされます。 現在の行位置は影響を受けません。

command のテキスト内では、 % および # はファイル名として展開され、 ! は、前の ! コマンドのテキストと置き換えられます。したがって、 !! は前の ! コマンドを繰り戻します。 このような展開が行われると、展開された行はエコーされます。

range を指定すると、 指定された行が標準入力としてコマンドインタプリタに渡されます。 command からの出力が指定行に置き換わります。

(shift left) 

range < count flags

指定した行を左に削除します。 シフトするスペースの数は、エディットオプション shiftwidth によって決まります。 シフト時に空白 (空白およびタブ) は失われます。その他の文字は影響を受けません。 最後に変更した行が現在の行になります。

(shift right) 

range > count flags

空白を挿入することにより、指定した行を右にシフトします。 挿入されるスペースの個数はエディタオプション shiftwidth によって決定されます。 変更された最後の行が現在の行になります。

(window) 

line z type count flags

count によって指定された行数が表示されます。 count のデフォルトはエディタオプション window の値です。

type を省略すると、 指定した line の後の count 行がプリントされます。

type を指定する場合、 以下の文字のいずれかでなければなりません。

+ 

アドレス指定された行の後、1 ウィンドウ分の行を表示します。

- 

アドレス指定された行を表示行のウィンドウの最下部に置きます。

. 

アドレス指定された行をウィンドウの中央に置きます。

^ 

アドレス指定された行より 2 ウィンドウ分前の行から 1 ウィンドウ分 を表示します。

= 

アドレス指定された行をウィンドウの中央に表示し、 アドレス指定されたその行の上下にダッシュの行を表示します。

プリントされた最後の行が現在の行になりますが、 = の場合は例外で、その場合はアドレス指定された行が現在の行になります。

エディタオプション

コマンド ex には、その動作を変更するオプションが数多くあります。 これらのオプションにはデフォルトの設定値があり、 set コマンド (上記を参照) を使って変更できます。 また、オプションは、環境変数 EXINIT, HOME ディレクトリにあるファイル .exrc, または現在のディレクトリにある .exrcset コマンド文字列を入れることによって、起動時に設定することもできます。 EXINIT が存在すると、 HOME ディレクトリにある .exrc ファイルは実行されません。 現在のディレクトリが HOME ディレクトリではなく、 exrc エディタオプション (以下を参照) が設定されている場合、 現在のディレクトリにある .exrc ファイルが EXINIT または HOME ディレクトリ .exrc の後に実行されます。

エディタは、 terminfo データベース (terminfo(4) を参照) からターミナルスクリーンの水平および垂直サイズを取得します。 これらの値は、環境変数 UNIX95 を設定して置き換えることができます。 この環境変数は、このコマンドに対して XPG4 の動作を使用するように指定します。 COLUMNS および LINES が環境変数です。 詳細については、以下の window エディタオプションを参照してください。

以下の表に、その他のエディタとは異なるデフォルトを示します。

名前デフォルトのエディタオプション
edit nomagicnovicenoreadonlyreport=1showmode
ex magicnonovicenoreadonlyreport=5noshowmode
veditnomagicnovicenoreadonlyreport=1showmode
vi magicnonovicenoreadonlyreport=5noshowmode
view magicnonovicereadonlyreport=5noshowmode

エディタオプションは特記しない限り論理型です。 省略形はかっこの中に示されています。

autoindent (ai) 

入力モードにおける行を (ブランクとタブを使用して) それぞれ 字下げし、前の行と揃うようにします。 字下げは、追加した行の後か、挿入した行または最初に変更した行の前から始まる。 追加字下げは、通常どおり提供できます。 継続行は新しい位置合わせまで自動的に字下げされます。

字下げの縮小は、1 回または複数回 ^D をタイプすることによって行われます。 ^D を押すごとに、カーソルは次の shiftwidth 個分のスペースだけ戻されます。 ^ の後に ^D を続けると、一時的に現在の行に対して字下げがすべて削除されます。 0 の後に ^D を続けると、字下げがすべて削除。

noautoindent (noai) によって反転します。 デフォルトは noautoindent です。

autoprint (ap) 

現在の行が、ワークエリアのテキストを変更する各コマンドの後に表示されます (オートプリントは、 global コマンドで行わないようになります)。 noautoprint (noap) によって反転します。 デフォルトは autoprint です。

autowrite (aw) 

ワークエリアが変更されており、 next, rewind, または ! コマンドを与えると、ワークエリアはカレントファイルに書き出されます。 noautowrite (noaw) によって反転します。 デフォルトは noautowrite です。

beautify (bf) 

入力テキストから廃棄されるタブ、改行、およびフォームフィード以外のすべての制御文字を発生します。 nobeautify (nobf) によって反転します。 デフォルトは nobeautify です。

directory=dirname (dir)
  

エディタのワークエリアを入れなければならないディレクトリを指定します。 このオプションは、新しいワークエリアが作成される場合に限って有効になります。 コマンド行で指定したエディットファイルに対するワークエリア ファイルの位置に影響を与えるには、これを EXINIT または .exrc に設定してください。 デフォルトは /var/tmp です。

指定したディレクトリが EXINIT または .exrc ファイルから設定されており、ユーザーが書き込みをできない場合、 エディタは終了します。 ユーザーによって対話的に設定する場合は、 エディタはエラーメッセージを発行します。

doubleescape 

セットされている場合、入力モードを終了するには、 2 回続けて ESC (エスケープ) 文字を押すことが必要です。 入力モードでは、1 回 ESC 文字を押し、その後別の 文字を押すと、 vi は音またはビジュアルによる警告を発行し (flash エディタオプションを参照)、その 2 文字をワークエリアに挿入します。 nodoubleescape によって反転します。 デフォルトは nodoubleescape です。

一部のターミナルのキーボードエディットキーによって送信される文字シーケンスは、 vi ユーザーコマンドの一部のシーケンスと同じです。 これらのキーのマッピングが使用可能になっていると (keyboardedit および keyboardedit! オプションを参照)、 vi は、エディットキーによって送信される文字シーケンスとユーザーによって タイプされる同一の文字シーケンスを識別別できなくなる可能性があります。 この問題は、ユーザーが入力モードを終了させるために別の vi コマンドの直後に ESC とタイプ入力するときに最も発生しやすいものです。 doubleescape オプションの設定により、この場合の曖昧さはなくなります。

edcompatible (ed)
  

置換コマンド上の g および c サフィックスの存在が記憶され、サフィックスを繰り戻すことによって切り換えされます。 noedcompatible (noed) によって反転します。 デフォルトは noedcompatible です。

errorbells (eb) 

設定すると、ボールド体または反転表示などの強調表示モードをサポートしないターミナルに限り、エラーメッセージの前にベルが付いています。 ターミナルが強調表示をサポートしている場合には、 エラーメッセージ前にベルは使用されず、このオプションには効果はありません。 ビジュアルモードのエラーが、(このオプションの設定とは関係なく) エラーメッセージ を伴わずにベルによって示されることに注意してください。

noerrorbells (noeb) によって反転します。 デフォルトは noerrorbells です。

exrc 

設定すると、現在のディレクトリが HOME ディレクトリでなければ、現在のディレクトリにある .exrc ファイルがエディタ初期化時に処理されます。 このオプションは、デフォルトでは設定されず、有効にするには、 環境変数 EXINIT または HOME ディレクトリ .exrc ファイルで設定しなければなりません。 上記の「エディタオプション」の入門的なテキストを参照してください。 noexrc によって反転します。 デフォルトは noexrc です。

flash (fl) 

セットされていると、適切な flash_screen エントリーが使用対象のターミナルの /usr/share/lib/terminfo データベースに存在すると、画面はビープ音を発する代わりに点滅をします。 noflash (nofl) によって反転します。 デフォルトは flash です。

hardtabs=number (ht)
  

ハードウェアタブ設定値間の間隔と、タブ文字の展開時にシステムで使用するスペース数を定義します。 タブストップは、 number の整数倍に相当する (画面の左端から始まる) カラム番号ごとに置かれます。 デフォルトは hardtabs=8 です。

ignorecase (ic) 

正規表現マッチングにおいて、テキストにおける大文字はすべて小文字にマップされます。 また文字クラス指定の場合を除き、正規表現における大文字はすべて小文字にマップされます。 noignorecase (noic) によって反転します。 デフォルトは noignorecase です。

keyboardedit 

設定すると、コマンドモード使用のために初期化時に自動的にロードされるキーボードエディット キーマッピングがすべて使用可能になります。 設定しなければ、これらのマッピングは無効です (が、削除されません)。 map コマンドを使用して現在使用可能なコマンドモード マッピングのリストを取得します。 nokeyboardedit によって反転します。 デフォルトは keyboardedit です。

keyboardedit! 

設定すると、input モード使用のために初期化時に自動的にロードされるキーボードエディットキー マッピングが使用可能になります。 設定されていなければ、これらのマッピングは使用不可になっています (が、削除されません)。 現在使用可能な入力モードのマッピングをリストするには map! コマンドを使用してください。 nokeyboardedit! によって反転します。 デフォルトは、 そのキーボードのエディットキーが HP スタイルのエスケープシーケンス を送る (ESC の後に英字 1 字) ターミナルでは nokeyboardedit! です。 その他のターミナルでは、デフォルトはすべて keyboardedit! です。

lisp 

lisp ソースコードの場合ビジュアルモードにおける autoindent モードおよび (, ), [[, ]], {, および } コマンドを変更します。 nolisp によって反転します。 デフォルトは nolisp です。

list 

プリントされる行をすべて、 ^I, によって示されるタブを付けて表示し、 行末に $ でマークします。 nolist によって反転します。 デフォルトは nolist です。

magic 

正規表現および置換え対象の文字列における文字の 解釈に影響を与えます (上記の正規表現および置換えを参照)。 nomagic によって反転します。 ex, vi, および view のデフォルトは magic です。 edit および vedit のデフォルトは nomagic です。

mesg 

他のユーザーから write コマンド (write(1) を参照) を使用して現在使用中の自分のターミナルに メッセージを送信することができます。 これにより、