ZSH' Sticky'提示

时间:2014-06-17 22:39:47

标签: macos bash terminal zsh oh-my-zsh

我的ZSH主题在我的.zsh-theme文件中使用RPROMPT='$(vbox_status)'输出我的Vagrant / VBox虚拟机的状态(其中vbox_status调用a script which outputs what's running),如下所示:

ZSH theme

然而,我想知道是否有一种方法可以使这个输出“粘性”,这样,它不会在每一行的末尾输出,而是保持在箭头所示的位置,只需在每次更新时自行更新上面输出一个新行。

例如

enter image description here

1 个答案:

答案 0 :(得分: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)部分更改为status命令即可。 (pr.sh必须在你的道路上)

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