我知道你可以在 zsh 中定义多行提示:
PROMPT='
test
? '
Run Code Online (Sandbox Code Playgroud)
但我想知道,你为什么不能定义多行正确提示?我试过:
RPROMPT='
test
still test '
Run Code Online (Sandbox Code Playgroud)
但什么也没有出现。这可能吗?
mpy*_*mpy 12
您可以通过使用precmd
每次在显示提示之前执行的函数在提示上方打印附加行来获得所需的(如果我猜对的话)效果。
例如使用此代码
precmd() {
LEFT="The time is"
RIGHT="$(date) "
RIGHTWIDTH=$(($COLUMNS-${#LEFT}))
print $LEFT${(l:$RIGHTWIDTH::.:)RIGHT}
}
PS1="foo > "
RPS1="bar"
Run Code Online (Sandbox Code Playgroud)
解释
$LEFT
并$RIGHT
握住左右两侧的琴弦,分别。您可以将命令的输出与$(...)
语法一起使用。$RIGHTWIDTH
是当前终端宽度(由zsh存储在$COLUMNS
参数中)与左边字符串宽度的差值。$((...))
用于数学表达式${(l:$RIGHTWIDTH::.:)RIGHT}
,其中参数$RIGHT
左填充 ( l
) 点(:.:
如果需要空格,请省略最后一个)到$RIGHTWIDTH
.PS1
而RPS1
对于更短PROMPT
和RPROMPT
。演示
The time is............................................Fri, Sep 18, 2015 8:20:22 PM
foo > _ bar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6375 次 |
最近记录: |