通常、行のピリオドはそれ自体で挿入を終了します。どうすれば逃げることができますか?
いいえ、行にピリオドを単独で挿入することはできません。これは、テキストの挿入を停止するed
の指示だからです。初期のいずれかを参照してください ed man pages (page 7):
行の先頭にピリオド(。)だけを入力すると、入力モードが終了します。
単独で期間に入らないことで回避できます。例えば: Space.Enter に続く .Enter 続いてs/^ //
。後続のs//
コマンドでペアリングする限り、スペース以外の任意の文字をトークンとして使用できます。
ピリオドを単独で挿入することはできません。行を追加、変更、または挿入すると、ed
は最終的にappend_lines
関数を呼び出します。その関数は、buffer.cで、改行で区切られた入力を読み取ります(get_stdin_line
を介して)。その一環として、結果の中でピリオドが(末尾の改行以外の)唯一のものであるかどうかを確認します。以下では、「ibufpp」は入力されたテキストへのポインタであり、「size」はそのバッファの長さです。
if( size == 2 && **ibufpp == '.' ) { *ibufpp += size; return true; }
圧縮されたtarバンドルは次の場所からダウンロードできます: http://download.savannah.gnu.org/releases/ed/ または表示 Debianのedのアップストリームページ または OpenBSDのed のページ。対応するコードは main.c にあります。
ed(1)Conference Twitter post で発見された別のオプションは、任意のother単一文字を入力し、それを置き換えることです。ピリオドのある文字:
s/./.