尝试阅读窗口底部的文本是一件非常令人沮丧的事情。每当我使用文本编辑器(如 Gedit)时,我都会在当前打开的文件底部填充 20 或 40 个空行,以防止我的注意力被强制转移到窗口底部。
不幸的是,当我使用交互式 shell(例如 python 或 bash)时,无法实现相同的解决方法。
我想找到一种方法来控制 Ubuntu 终端的光标在填满前几行后会停留在哪一行。
有一个类似的问题这里,但接受的答案并未解决问题。
欢迎提出任何建议。
编辑
这是两个 Gedit 窗口的示例。
第一张截图显示的窗口几乎已满。再多写一两行,我就得花接下来的一个小时盯着窗口底部了。
第二张截图展示了解决方案。我在文件底部添加了空行,这样相关的第三行就不再位于屏幕底部,而是位于中间。
我正在寻找一种在终端内实现类似效果的方法,以便无论我使用什么 shell,都不会强迫我的注意力集中在终端窗口的底部,而是让我的视线舒适地保持在窗口的垂直中心。
答案1
您可以更改终端提示符,使其回显五个回车符,然后使用 ansi 转义序列向上移动五行,然后完成提示符的其余部分。如果这对您有用,您可以将其放入 .bashrc 中以使其永久生效。将其复制并粘贴到您的终端中:
PS1='\n\n\n\n\n\[\033[5A\]\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'
'\n\n\n\n\n' 向下移动五行,'[\033[5A]' 向上移动五行。如果您需要更多空间,可以修改这两个。
答案2
您可以尝试使用tput
更改您的终端的滚动区域:
tput csr 1 $((LINES/2))
checkwinsize
如果启用了shell 的选项,则$LINES
在调整终端大小时应该会更新 - 但是,为了tput csr
在发生这种情况时重新运行命令,您需要捕获信号SIGWINCH
。您可以将这样的陷阱添加到交互式 shell 初始化文件中,~/.bashrc
如下所示:
trap 'tput csr 1 $((LINES/2))' WINCH ; kill -s WINCH $$
命令的第二部分kill -s WINCH $$
发送一个首字母SIGWINCH
,以便tput csr
在第一次调用 shell 时该命令也会运行。
参考:
答案3
clear
为什么不时不时地使用该命令呢?