答案1
该提案应被理解为“概念验证”,而不一定是交钥匙解决方案。可能需要改进/调整。
您似乎无论如何都使用 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\]>"
处理 PS1 shell 变量和函数代码时有一些已知的警告,这些警告不一定在这里考虑,但在例如其他线程,在这些论坛中搜索并根据需要合并。
答案2
我一直在开发一个 tmux 插件,可以做到这一点。看一看:
https://github.com/casonadams/tmux-space-theme
或者如果您只想在 ~/.tmux.conf 中添加一些内容
home="#(if [[ $HOME == #{pane_current_path} ]]; then echo \"~\" ; else echo #{b:pane_current_path}; fi)"
path="#($(tmux showw -v @show-full-window-path) == true && echo \"$(echo #{pane_current_path} | awk '{print \"~\"$1}' | cut -d/ -f-1,4-)\" || echo \"$home\")"
git_status="#(cd #{pane_current_path}; git status --ignore-submodules -sb | head -n1 | tr -d \"# \" | cut -f1 -d\".\")"
# Then use the vars where you want them.
set-option -g status-right " $git_status "
set-window-option -g window-status-current-format " $path "
还可以添加setw -q @show-full-window-path true
以显示完整路径。