터미널 하단의 상태 표시줄이 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전체 경로를 표시하기 위해 추가할 수도 있습니다 .

관련 정보