Ed
如何在ed中向後滾動
BSD ed 和 GNU ed 具有
z
滾動命令。但是,重複使用該z
命令似乎只會向前滾動。有沒有類似的東西z
可以向後滾動而不是向前滾動?
我假設問題中的“滾動”意味著“顯示終端緩衝區中的下幾行”,這是非標準
z
命令正在執行的操作。移動到另一行是通過行號、正則表達式或相對地址(例如-4
,對於前面的第 4 行)來定址一行來完成的,但我認為這不是這個問題的意義所在。您不能以與
z
向前滾動相同的簡潔方式直接向後滾動(從 eg 開始.z
,然後z
重複,以顯示緩衝區中的下幾行),但您可以使用相對定址來跳回兩次滾動視窗大小,然後從該點向前滾動。假設您使用 25 行的滾動視窗,並且您希望從文件的最後向後滾動。
$z25 -50z -50z
(等等,使用
zn
代替z
來獲得編號的行。)這首先顯示最後一行(這也將後續命令
$z25
的滾動視窗設置為25 行)。z
然後每個-50z
將 50 行移回緩衝區中,然後從那裡開始顯示 25 行。問題是您通常不知道預設滾動視窗大小(預設情況下,終端中的行數),因此您需要明確指定要滾動的行數,如上所述。
輸入查看下一組(上一個)行也有點麻煩,但如果使用with
-50z
可能不會有太大問題,它允許您使用呼叫上一個命令。ed``rlwrap``Up-arrow
另一個問題是,在編輯緩衝區的開頭,輸入一個使您超過緩衝區開頭的相對地址會給您一個錯誤。
該
z
命令是類似 的簡寫.,+24p
,但它24
會自動替換為終端視窗中可用的行數減 1(除非在 中給出明確的數字z25
)。因此,上面顯示的-50z
命令可以重寫為(類似於)-50;.,+24p
這意味著“在緩衝區中跳回 50 行,然後列印目前行和接下來的 24 行”。(使用
n
代替p
來獲得編號的行。)