全ての
コマンドは、1 文字からなりますが、追加パラメータが必要なコマンドもあります。
コマンドのパラメータが複数の行にわたる場合には、そのパラメータを含めたコマンド
の終りを含む行を除き、行末にバックスラッシュ (\\) を付加して下さい。
一般的には、1 行ごとに 1 コマンドを入れることが許されています。
しかしながら、ほとんどのコマンドは、コマンド実行を行なった後のデータ更新
その他を確認するために、
p
(print)、
や
l
(list)、
n
(enumerate),
のような表示系のコマンドを同時に指定できます。
インタラプト (一般的には ^C) を入力することで、現在実行しているコマンドを
強制終了し、コマンドモードに戻すことができます。
は、以下のコマンドを使用できます。コマンド実行時に何の指定もない場合の
デフォルトの行番号もしくは行範囲が括弧内に示されています。
-tag -width indent
(.)a
指定した行の後にテキストを追加します。
テキストは入力モードで入力されていきます。
現在行番号は、入力された最後の行に設定されます。
(.,.)c
バッファ内の指定した行を変更します。指定した行のデータは、バッファから消去
され、そこに対してテキストデータを入力するようになります。
テキストは入力モードで入力されていきます。
現在行番号は、入力した最後の行に設定されます。
(.,.)d
指定した範囲をバッファから削除します。
削除した範囲の後に行が続いている場合、現在行番号は、その行に設定されます。
そうでない場合には、現在行番号は、削除された範囲の前の行に設定されます。
e Ar file
file
を編集し、デフォルトのファイル名を設定します。
もし
file
が指定されなかった場合には、デフォルトのファイル名が使用されます。
本コマンド実行時に、それまで別のファイルを編集していた場合には、
その内容はすべて消去され、新しいファイルが読み込まれます。
現在行番号は、入力された最後の行に設定されます。
e Ar !command
!command
で指定されたコマンドを実行し、その結果として標準出力へ
出力されたデータを編集します (後述する
! command
を参照して下さい)。
デフォルトのファイル名は変更されません。
command
の出力が読み込まれる前に、バッファ内に存在した行はすべて消去されます。
現在行番号は、入力された最後の行に設定されます。
E Ar file
無条件で
file
で指定したファイルを読み込み、編集します。
e
コマンドと動作は似ていますが、すでにバッファ上のデータに変更が加えられ
ている場合でも、未書き込みの変更を警告を出さずに捨ててしまう点が異なります。
現在行番号は、入力された最後の行に設定されます。
f Ar file
デフォルトファイル名を
file
に設定します。
file
名が指定されない場合には、デフォルトファイル名が表示されます。
(1,$)g/re/command-list
command-list
で指定されたコマンドを、指定した正規表現
re
に一致する各行に対して実行します。
現在行番号は、
command-list
で指定されたコマンドが実行される前に、指定した正規表現に一致した行
に設定されます。
g
コマンドが終了した場合、現在行番号は最後に
command-list
実行の影響を受けた行に設定されます。
command-list
で指定されるコマンドは、1 行ごとに 1 つずつ書かれる必要があります。各コマンド
行の終りには、一番最後のコマンド行を除いてはバックスラッシュ (\\) を記述する
必要があります。
コマンド
g ,
G ,
v ,
V
を除くすべてのコマンドを指定可能です。
command-list
中の空行は、
p
コマンドと同等に扱われます。
(1,$)G/re/
指定した正規表現
re
に一致した行に対して、対話編集を行ないます。
指定した正規表現に一致する文字列を含む行があると、その行を表示し、現在行番号を
設定します。
そして、ユーザに
command-list
の入力を促します。
G
コマンドが終了した場合、現在行番号は、
command-list
実行の影響を受けた最後の行に設定されます。
command-list
の記述形式は、
g
コマンドで指定するものと同じです。改行のみの場合は、コマンド実行をしない
( ヌルコマンドリストを指定した ) ものとみなされます。
`&' 文字のみを入力した場合には、
直前に実行した ( ヌルコマンドリストではない ) コマンドを再実行します。
H
エラーメッセージの出力の有無を切り替えます。
デフォルトでは、エラーメッセージは出力されません。
ed スクリプトを作成する場合、スクリプトのデバッグのために、本コマンドを
最初に実行することをおすすめします。
h
最後に表示されたエラーメッセージを表示します。
(.)i
編集バッファ中の現在行の前に、テキストを挿入します。
テキストは入力モードで入力されていきます。
現在行番号は、入力された最後の行に設定されます。
(.,.+1)j
指定した範囲の行を 1 行に連結します。指定した行はバッファから削除され、
その行の内容を含む 1 行に置き換えられます。
現在行番号は、置き換えられた行に設定されます。
(.)klc
行に、英小文字
lc
で指定したマークをつけます。
その後、マークをつけられた行は、コマンド中で
'lc
(つまり、シングルクォートと小文字
lc
) として指定できるようになります。
マークは、その行が削除されるかもしくは変更されるかしない限り、消えることは
ありません。
(.,.)l
指定した範囲の行の内容を見やすく表示します。
もし 1 つの行が 1 画面以上を占める場合 ( 例えばバイナリファイルを見ている
場合など )
`--More--' プロンプトが最下行に表示されます。
次の画面を表示する前に
はリターンキーが入力されるまで待ちます。
現在行番号は、表示された最後の行に設定されます。
(.,.)m(.)
指定した範囲の行をバッファ内で移動します。指定した行は、
コマンドの右辺で指定した行の後ろに
移動されます。移動先の行としては、
0
(ゼロ) が指定可能です。
現在行番号は、移動された最後の行に設定されます。
(.,.)n
指定した行の内容を、行番号つきで表示します。
現在行番号は、表示された最後の行に設定されます。
(.,.)p
指定した範囲の行の内容を表示します。
現在行番号は、表示された最後の行に設定されます。
P
コマンドプロンプト表示の有無を切り替えます。
コマンド起動時のオプション
p Ar string
でプロンプトが指定されていなければ、
コマンドプロンプトの表示はデフォルトでオフになっています。
q
を終了します。
Q
無条件に
を終了します。
このコマンドは
q
コマンドと似ていますが、まだファイルに書き出されていない
変更があっても警告せずに終了する点が異なります。
($)r Ar file
file
で指定されたファイルを、指定した行の後ろに読み込みます。
file
が指定されない場合、デフォルトのファイル名が読み込みに使用されます。
このコマンドに先だってデフォルトのファイル名が設定されていない場合、
デフォルトのファイル名には、
file
で指定されたものが設定されます。
それ以外の場合、デフォルトのファイル名は変更されません。
現在行番号は、読み込まれたファイルの最後の行に設定されます。
($)r Ar !command
command
で指定されたコマンドを実行し、その結果として標準出力へ出力された
データを指定した行の後ろに読み込みます (後述する
! command
を参照して下さい)。
デフォルトのファイル名は変更されません。現在行番号は、読み込まれた最後の行の
行番号に設定されます。
(.,.)s/re/replacement/
(.,.)s/re/replacement/g
(.,.)s/re/replacement/n
指定した行のテキスト中の、正規表現
re
に一致する文字列を、文字列
replacement
に置き換えます。
デフォルトでは、それぞれの行で最初に一致した文字列のみを置き換えます。
g
(global) サフィックスが指定された場合、一致した文字列はすべて置き換えられます。
n
サフィックス (
n
は正の整数) が指定された場合、
n
回目に一致した文字列だけを置き換えます。
指定した範囲で一度も文字列の置換が起こらなかった場合、エラーとみなされます。
現在行番号は、最後に置換が発生した行に設定されます。
re
および
replacement
は、スペースおよび改行を除くすべてのキャラクタを用いて区切ることが
可能です (後述する
s
コマンドを見て下さい)。
最後のデリミタのうち 1 つか 2 つが省略された場合、
最後に文字列置換が発生した行は、
p
コマンドが指定された場合と同様に表示されます。
replacement
中のエスケープされていない `&' は、一致した文字列と置き換えられます。
キャラクタシーケンス
\m
(
m
は [1,9] の範囲の整数です ) は、一致した文字列の
m
番目の後方参照で置き換えられます。
replacement
の中に入る文字が `%' のみだった場合、
最後に行なった置換の
replacement
が使用されます。
改行を
replacement
に指定したい場合は、バックスラッシュを用いてエスケープすれば可能です。
(.,.)s
最後の置換を繰り返します。
この形式の
s
コマンドは、回数を示すサフィックス
n
もしくは、他の
r 、
g 、
p
のどのキャラクタとの組み合わせも可能です。
n
が指定されると、
n
回目に一致した文字列だけが置換されます。
r
サフィックスが指定されると、最後の置換が発生した文字列の変わりに、
最後に指定した正規表現が使用されます。
g
サフィックスは、最後の置換で用いたグローバルサフィックスの使用の
有効/無効を切り替えます。
p
サフィックスは、最後の置換に指定されたプリントサフィックスを反転します。
現在行番号は、最後に置換が発生した行に設定されます。
(.,.)t(.)
指定した範囲の行を、コマンド文字の右辺に指定した行番号の後に
コピー (つまり転送) します。コピー先の行番号としては、
0
(ゼロ) の指定が許されています。
現在行番号は、コピーした一番最後の行の行番号に設定されます。
u
最後に実行したコマンドの実行結果を取り消し、現在行番号を、取り消したい
コマンドが実行される前のものに戻します。
グローバルコマンドである
g 、
G 、
v 、
V
については、その改変は 1 コマンドで行なわれたとして扱います。
u
は自分自身の動作を取り消すこともできます。
(1,$)v/re/command-list
指定した範囲の行のうち、指定した正規表現
re
と一致する文字列が含まれていない行について、
command-list
で指定したコマンドを実行します。
これは
g
コマンドに動作が似ています。
(1,$)V/re/
指定した範囲の行のうち、指定した正規表現
re
に一致する文字列が含まれていない行について、対話編集を行ないます。
これは
G
コマンドに動作が似ています。
(1,$)w Ar file
指定した範囲の行を、
file
で指定したファイルに書き出します。
それまで
file
に格納されていた内容は、警告なしに消去されます。
デフォルトファイル名が設定されていない場合、デフォルトファイル名は
file
に設定されます。それ以外の場合では、デフォルトファイル名は変更されません。
ファイル名が指定されなかった場合には、デフォルトファイル名が使用されます。
現在行番号は変更されません。
(1,$)wq Ar file
指定した範囲の行を
file
で指定したファイルに書き出し、
q
コマンドを実行します。
(1,$)w Ar !command
指定した範囲の行の内容を
!command
の標準入力に書き出します (
!command
については、以下の説明を参照して下さい)。
デフォルトファイル名および現在行番号は変更されません。
(1,$)W Ar file
指定した範囲の行の内容を、
file
で指定したファイルの後ろに追加書き込みします。
w
コマンドと似ていますが、指定したファイルにそれまで格納されていた内容
がなくなることはありません。
現在行番号は変更されません。
x
以降の読み書きで用いられる暗号化鍵の入力を促します。
改行のみが入力されると、暗号化は解除されます。
それ以外の場合、キー読み込み中のエコーは抑制されます。
暗号化および復号化は
bdes 1
アルゴリズムを用いて行われます。
Pf (.+1)z n
指定した行から一度に
n
行だけスクロールします。
n
が指定されない場合には、現在のウィンドウサイズだけスクロールします。
現在行番号は、最後に表示した行の行番号に設定されます。
!command
command
で指定したコマンドを、
sh 1
を用いて実行します。
command
の最初の文字が `!'の場合には、その文字は直前に
!command
で実行したコマンド文字列が格納されます。
command
文字列をバックスラッシュ(\\)でエスケープした場合には、
は処理を行ないません。
しかし、エスケープされない
%
文字があった場合には、その文字列はデフォルトファイル名に置き換えられます。
シェルがコマンド実行から戻ってきた場合には、`!' が標準出力に出力されます。
現在行番号は変更されません。
($)=
指定された行の行番号を表示します。
(.+1)newline
指定した行を表示します。そして、現在行番号を表示した行のものに
設定します。