BSD ed と GNU ed にはz
スクロールコマンドがあります。しかし、z
コマンドを繰り返し使用すると、今後のみスクロールするようです。z
前方にスクロールするのではなく、後方にスクロールするのと似ていますか?
ベストアンサー1
z
質問では、「スクロール」とは「ターミナルバッファに次の数行を表示する」を意味し、これが非標準コマンドが実行する操作であると仮定します。他の行に移動することは、行番号、正規表現、または相対アドレス(前の4行など)で行の-4
アドレスを指定することによって行われますが、これがこの質問の目的ではないようです。
z
.z
前方にスクロールするのと同じ簡潔な方法で直接直接スクロールすることはできませんが(たとえば、で始まるz
バッファの次の数行を繰り返し表示するなど)、相対アドレッシングを使用してスクロールウィンドウサイズの2倍に戻ることができます。その時点で前方にスクロールします。
25行のスクロールウィンドウを使用し、文書を最後から後ろにスクロールするとします。
$z25
-50z
-50z
(ちょっと待って、番号付きの行を取得するzn
には代わりに使用してくださいz
。)
最後の行を最初に表示します$z25
(これにより、後続のコマンドのローリングウィンドウもz
25行に設定されます)。その後、誰もが-50z
50行をバッファに戻し、そこから始まる25行を表示します。
問題は通常、デフォルトのスクロールウィンドウサイズ(デフォルトでは端末の行数)がわからないため、上記のように明示的なスクロール行数を提供する必要があることです。
-50z
次の(前の)行セットを表示するために入力するのもやや面倒ですが、を使用して前のコマンドを呼び出すことができるwithをed
使用すると、おそらく大きな問題にはなりません。rlwrap
Up-arrow
もう1つの問題は、編集バッファの先頭にバッファの先頭を超えて相対アドレスを入力するとエラーが発生することです。
このコマンドは、ターミナルウィンドウで利用可能な行数から1を引いた値に自動的に置き換えられることを除いて、とz
同様です(明示的な数字が指定されていない限り)。したがって、上記のコマンドは次のように書き換えることができます。.,+24p
24
z25
-50z
-50;.,+24p
これは、「バッファから50行後に移動し、現在の行と次の24行を印刷します」を意味します。 (番号付きの行を取得n
するには代わりに使用してくださいp
。)