我有我的ZSH主題我.zsh主題文件中使用RPROMPT='$(vbox_status)'
輸出我的流浪/垂直框虛擬機的狀態(其中vbox_status
電話a script which outputs what's running),像這樣:ZSH「粘住」提示
然而,我想知道是否有辦法讓這個輸出變得「粘性」,這樣,而不是在每一行的末尾輸出,它將停留在箭頭所指示的位置,只要更新一行就更新自己在上面輸出。
例如。
我有我的ZSH主題我.zsh主題文件中使用RPROMPT='$(vbox_status)'
輸出我的流浪/垂直框虛擬機的狀態(其中vbox_status
電話a script which outputs what's running),像這樣:ZSH「粘住」提示
然而,我想知道是否有辦法讓這個輸出變得「粘性」,這樣,而不是在每一行的末尾輸出,它將停留在箭頭所指示的位置,只要更新一行就更新自己在上面輸出。
例如。
你可以用一個命令來完成這一名爲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
不同,但我相信你可以將這部分工作。 只需將$(日期)部分更改爲狀態命令即可。 (pr.sh必須在你的道路上)
這有點笨重,但它會讓你開始。 tput
可以做什麼幾乎沒有限制!
輝煌,那就是訣竅!我已經更新了我的要點,以便用ZSH顯示完整的解決方案:https://gist.github.com/grega/61355d041ccfaef66419 –
沒有運行虛擬機的示例:https://www.evernote.com/shard/s153/sh/ 6bc2d85e-d9b7-4a69-8cf5-b831b0bd90ec/680ec902d7d540f94ace5aff5d80f6f6/res/5b3085c0-f003-4d26-ac9c-2fbe4d4ecccf/skitch.png?resizeSmall&width = 832 –
運行1個虛擬機的示例:https://www.evernote.com/shard/ s153/sh/cf208c18-9d87-47d0-afb2-4b19c28662b8/8758ef7286dfc035381ab1e2f5d3c28f/res/8a47b88d-cb78-4519-9857-040a7c93e91c/skitch.png?resizeSmall&width = 832 –
你不需要(或真的想)在提示符下執行此操作。在zsh中,查看函數'preexec'和'precmd'。對於bash,請查看PROMPT_COMMAND並設置DEBUG陷阱。 –