私はDSLのバージョンが他のツールにed
表示されるので、DSLをよりよく理解しようとしています。sed
vim
現在の行から始まり、4行以下に拡張される明示的な範囲を使用ed
して次の4行を印刷するには、このオプションを使用します。.,+4n
.,+4
しかし、文脈を把握するために、現在の行の周りに数行を印刷することが重要であるように見え、いくつかの構文的砂糖が必要です。
現在の行に基づいて行範囲の略語がありますかed
?
たとえば、以下の内容は.,+4n
かなり長く見えます。
$ touch ~/foo
$ ed '-p* ' ~/foo
0
* 0a
1
2
3
4
5
6
7
8
9
10
11
.
* 5
5
* .,+4n
5 5
6 6
7 7
8 8
9 9
答え1
-4,+4n
最初の4行、現在の行、次の4行(番号付き)が印刷されます。
同じ内容を書くもう一つの方法は少し短いことです-4z8n
。最初に指定された行(ここ)に移動してから、その行と追加の行(ここ)を表示することを除いて、z
コマンドが適用されます。行に番号を付けます。実際の違いは、コマンドを出すとp
-4
8
n
zn
再び(今は数字はありません)表示されます次8行(またはz
初期コマンドの後に入力した数字)
どちらのコマンドも「現在行」を変更するため、手動で戻るか-4
移動する前に表示を設定してから(例を使用してka
)、その表示に戻す必要があります(例を使用'a
)。残念ながら、エディタはed
同時に与えられた複数のコマンドを許可しません。
このz
コマンドはそうではありません。基準ed
ed
これはコマンドですが、ed
GNUシステムとBSDシステムの両方でサポートされています。
を使用すると、ex
このコマンドは.z.5
現在の行を中央に置き、現在のバッファの5行を表示します。ここでは、カーソルを最後に表示された行の下に移動することもできます。