ターミナルの下部にあるステータスバーがPS1を置き換えます。

ターミナルの下部にあるステータスバーがPS1を置き換えます。

端末でタスクを実行すると、PS1が各コマンドを複数回繰り返すと思いました。私のPS1にはCWDとgit分岐が含まれており、時間がかなり長くなる可能性があります。

$ドル記号のみが表示されるようにPS1を設定し、他の情報を「ステータスバー」に移動するか、端末の下部に保持する方法はありますか?tmuxのステータスバーと非常に似ていますが、これらのビットは通常プロンプトの一部を構成します。

理想的には、.bashrcの変更のみを含むソリューションが欲しいが、どんな解決策でも可能です。私はインターネットを検索し、tmuxのgitブランチ(しかしCWD /他のビットはありません)と実際には機能しない非常に不安定な「時間のあるステータスバー」を見つけました。

質問例: ここに画像の説明を入力してください。

答え1

提案は「概念証明」として理解されるべきであり、必ずしもターンキーソリューションではありません。改善/調整が必要な場合があります。

とにかくconsole_codesを使用しているようで、PS1いくつかの拡張機能を使用できます。以前のサイズ変更に関係なく、「ステータスバー」が画面下部に表示されるようにするには、一部のLINESシェル整数演算でシェル変数を使用してスクロール領域を縮小し、カーソル位置を保存/復元して画面下部に印刷します。 。努力する

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

PS1 シェル変数と関数コードを扱う際にはいくつかの既知の注意事項がありますが、ここでは必ずしも考慮しているわけではありませんが、例えば次のようになります。他のスレッド、該当するフォーラムを検索し、必要に応じてマージします。

答え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フルパスを表示するために追加することもできます。

関連情報