Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        3年前关闭。
                                                                                            
                
        
在vim和许多其他文本编辑器中,您可以将文件末尾向上滚动到屏幕顶部,同时将其余各行显示为空白。但是在终端中,默认情况下,行尾固定在终端屏幕的末尾,因此您的当前行始终显示在底部。在最后一行和屏幕底部之间添加空白行时,如何滚动当前行?
谢谢。

最佳答案

大多数终端识别VT100样式的滚动区域。您可以使用这些设置来临时设置要滚动的行的限制,然后移动行。

一步步:


保存当前光标位置
查找屏幕上的行数
计算您想保留的最后一个行号(上方)
编写控制顺序以设置刚好超过该行的滚动边距,直到屏幕末端
将光标移动到(屏幕和滚动区域的)最后一行
发送控制序列(或换行符等),以迫使滚动区域向上“索引”
取消滚动边距
恢复光标位置


在脚本中,您可以使用tput来完成大部分操作,例如,


tput sc保存光标位置
tput csr first last,将滚动区域设置为第一行/最后一行
tput cup最后一个0,将光标移动到滚动区域的最后一行(使用与csr命令相同的最后一个值)
tput ind索引一次,或tput indn count索引,按计数行索引。
tput rc恢复光标位置


命令(csr等)是终端功能,一个终端到另一个终端可能有所不同。

尽管滚动区域得到了广泛使用,但它不在标准(ECMA-48)中。

进一步阅读:


tput, reset - initialize a terminal or query terminfo database
terminfo - terminal capability data base

10-04 19:07