zsh我建议不要尝试这样做,而是使用tmux它。如果你在你的中设置以下内容~/tmux.conf应该会达到预期的效果:
set -g status-position top
set -g status-right '#(system-information-command)'
set -g status-intervall 10
Run Code Online (Sandbox Code Playgroud)
它将在顶部放置一个状态栏,system-information-command在其中打印输出的第一行,并每 10 秒更新一次。
虽然从内部在终端的第一行打印一些内容非常容易zsh,并且如果需要的话,不断更新它也不是那么困难,但保留滚动行为将非常困难,即使不是不可能zsh。
原因是向后滚动缓冲区是由终端维护的,而不是由zsh. 任何到终端的输出都是在光标的当前位置完成的。如果在光标位置或之后已经打印了任何内容,它将被覆盖。没有办法插入任何东西。
除非将光标明确设置到某个位置,否则它将位于最后一个输出的末尾,大多数情况下位于终端的最底部。正如所说,将光标放在第一行,写一些东西并将其重置到之前的位置非常容易。但是打印状态行之前第一行中的任何内容都将被覆盖。zsh只能写入终端,无法读取先前的输出。因此,无论状态栏覆盖什么,都无法恢复。
如果您在终端中向上滚动,之前打印的状态行将与终端内容的其余部分一起向下移动。如果命令的输出高于终端,则至少一行将被覆盖。
tmux是终端复用器。它本质上在您的终端内运行一个终端(或多个终端)。zsh然后在其中启动的任何程序都将在“内部”终端中运行。同时状态行将被打印到“外部”终端并且不会干扰 shell 的输出。
| 归档时间: |
|
| 查看次数: |
3231 次 |
| 最近记录: |