4

我的 ZSH 主题RPROMPT='$(vbox_status)'在我的 .zsh-theme 文件中使用输出我的 Vagrant/VBox VM 的状态(其中vbox_status调用输出正在运行的脚本),如下所示:

ZSH 主题

但是,我想知道是否有一种方法可以使此输出“粘性”,这样,它不会在每一行的末尾输出,而是停留在箭头指示的位置,并且只要有新行就简单地更新自己是上面的输出。

例如。

在此处输入图像描述

4

1 回答 1

3

您可以使用名为tput.

我制作了一个基本脚本,它在屏幕的一角放置了一个字符串,可以帮助您入门。您可以通过擦除内容和突出显示或其他方式使它变得更好,但这是一个起点:

#!/bin/bash
screen_w=$(tput cols)   # Get screen width.
screen_h=$(tput lines)  # Get screen height.
str=$*                  # String to put in corner.
string_w=${#str}
let "x = $screen_w - $string_w"

tput sc               # Save current position
tput cup $screen_h $x # Move to corner
echo -ne $str         # Put string in the corner
tput rc               # Go back to saved position.
echo " >"             # Some kind of prompt

所以你可以设置你的提示来像这样运行它(我把上面的脚本叫做 pr.sh)

PS1=$(pr.sh $(date))

它可能会有所不同,zsh但我相信你可以解决这个问题。只需将 $(date) 部分更改为您的状态命令。(pr.sh 必须在你的路径上)

这有点笨拙,但它会让你开始。您可以做什么几乎没有限制 tput

于 2014-06-18T02:29:17.787 回答