Flux Asked: 2021-11-16 00:43:05 +0800 CST2021-11-16 00:43:05 +0800 CST 2021-11-16 00:43:05 +0800 CST 如何在ed中向后滚动 772 BSD ed 和 GNU ed 具有z滚动命令。但是,重复使用该z命令似乎只会向前滚动。有没有类似的东西z可以向后滚动而不是向前滚动? ed 1 个回答 Voted Best Answer they 2021-11-16T01:30:43+08:002021-11-16T01:30:43+08:00 我假设问题中的“滚动”意味着“显示终端缓冲区中的下几行”,这是非标准z命令正在执行的操作。移动到另一行是通过行号、正则表达式或相对地址(例如-4,对于前面的第 4 行)来寻址一行来完成的,但我认为这不是这个问题的意义所在。 您不能以与z向前滚动相同的简洁方式直接向后滚动(从 eg 开始.z,然后z重复,以显示缓冲区中的下几行),但您可以使用相对寻址来跳回两次滚动窗口大小,然后从该点向前滚动。 假设您使用 25 行的滚动窗口,并且您希望从文档的最后向后滚动。 $z25 -50z -50z (等等,使用zn代替z来获得编号的行。) 这首先显示最后一行(这也将后续命令$z25的滚动窗口设置为25 行)。z然后每个-50z将 50 行移回缓冲区中,然后从那里开始显示 25 行。 问题是您通常不知道默认滚动窗口大小(默认情况下,终端中的行数),因此您需要明确指定要滚动的行数,如上所述。 输入查看下一组(上一个)行也有点麻烦,但如果使用with-50z可能不会有太大问题,它允许您使用调用上一个命令。edrlwrapUp-arrow 另一个问题是,在编辑缓冲区的开头,输入一个使您超过缓冲区开头的相对地址会给您一个错误。 该z命令是类似 的简写.,+24p,但它24会自动替换为终端窗口中可用的行数减 1(除非在 中给出明确的数字z25)。因此,上面显示的-50z命令可以重写为(类似于) -50;.,+24p 这意味着“在缓冲区中跳回 50 行,然后打印当前行和接下来的 24 行”。(使用n代替p来获得编号的行。)
我假设问题中的“滚动”意味着“显示终端缓冲区中的下几行”,这是非标准
z
命令正在执行的操作。移动到另一行是通过行号、正则表达式或相对地址(例如-4
,对于前面的第 4 行)来寻址一行来完成的,但我认为这不是这个问题的意义所在。您不能以与
z
向前滚动相同的简洁方式直接向后滚动(从 eg 开始.z
,然后z
重复,以显示缓冲区中的下几行),但您可以使用相对寻址来跳回两次滚动窗口大小,然后从该点向前滚动。假设您使用 25 行的滚动窗口,并且您希望从文档的最后向后滚动。
(等等,使用
zn
代替z
来获得编号的行。)这首先显示最后一行(这也将后续命令
$z25
的滚动窗口设置为25 行)。z
然后每个-50z
将 50 行移回缓冲区中,然后从那里开始显示 25 行。问题是您通常不知道默认滚动窗口大小(默认情况下,终端中的行数),因此您需要明确指定要滚动的行数,如上所述。
输入查看下一组(上一个)行也有点麻烦,但如果使用with
-50z
可能不会有太大问题,它允许您使用调用上一个命令。ed
rlwrap
Up-arrow另一个问题是,在编辑缓冲区的开头,输入一个使您超过缓冲区开头的相对地址会给您一个错误。
该
z
命令是类似 的简写.,+24p
,但它24
会自动替换为终端窗口中可用的行数减 1(除非在 中给出明确的数字z25
)。因此,上面显示的-50z
命令可以重写为(类似于)这意味着“在缓冲区中跳回 50 行,然后打印当前行和接下来的 24 行”。(使用
n
代替p
来获得编号的行。)