终端底部的状态栏代替 PS1

Joh*_*unt 5 bash prompt tmux

我突然想到,当我在终端中做事时,我的 PS1 会为每个命令重复几次。我的 PS1 包括 CWD 和 git 分支,所以它可以得到相当长的时间。

有没有一种方法可以将我的 PS1 设置为 $ 美元符号,但将其他信息移到“状态栏”中,或者只是将其保留在终端底部?很像 tmux 的状态栏,但这些位通常构成我的提示的一部分。

理想情况下,我想要一个只涉及更改我的 .bashrc 的解决方案,但任何解决方案都可以。我做了一些谷歌搜索,发现了一个 tmux 的 git branch 东西(但没有 CWD/其他位)和一个非常古怪的“状态栏与时间”并没有真正起作用。

问题示例: 在此处输入图片说明

Rud*_*diC 3

该提案应被理解为“概念验证”,而不一定是交钥匙解决方案。可能需要改进/调整。

您似乎无论如何都使用 console_codes ,PS1因此可能允许一些扩展使用。为了让“状态栏”出现在屏幕底部,无论之前如何调整大小,都LINES可以使用 shell 变量以及一些 shell 整数算术来缩小滚动区域,保存/恢复光标位置,并打印到屏幕底部。尝试

CSI=$'\e'"["
PS1="\[${CSI}s${CSI}1;$((LINES-1))r${CSI}$LINES;1f\u:YourOutputGoesHere:\w${CSI}K${CSI}u\]>"
Run Code Online (Sandbox Code Playgroud)

在处理 PS1 shell 变量和函数代码时,有一些已知的警告,这些警告不一定在这里考虑,但在其他线程中有所涉及,在这些论坛中搜索并在需要时合并。