Ed

如何在ed中向後滾動

  • November 15, 2021

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來獲得編號的行。)

引用自:https://unix.stackexchange.com/questions/677576