端末でタスクを実行すると、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
フルパスを表示するために追加することもできます。