zsh로 프롬프트의 오른쪽 부분을 무리하게도 선행에 표시하고 싶습니다.
3204 단어 ShellScriptZsh
하고 싶은 일
zsh에서 다음 두 개에 해당하면 두 번째 줄에 RPROMPT(プロンプトの右側)
가옵니다.
.zshrc
에서 PROMPT
끝에 줄 바꿈 코드를 넣고 명령을 새 줄에서 입력하도록합니다.RPROMPT
사용 아래 이미지처럼 보입니다.
이것으로 곤란한 것이, 터미널의 내용을 Slack등에 복사해 공유하려고 했을 때,
RPROMPT
까지 복사되어 버려, 그것을 지우는 수고가 생겨 버린다는 것입니다.왜 사용자가 명령을 입력하는 행과 같은 행에
RPROMPT
를 내는 사양일 것이다. .그것을 어떻게든하고 싶다는 틈새 게시물입니다.
덧붙여서 어떠한 설정으로, 간단하게 이것을 해소하는 방법은 생각지 못했습니다.
(
RPROMPT
는 개행 코드 효과가 없습니다. ZLE_RPROMPT_INDENT
를 부의 정수로 해도 무시됩니다.)해결방법안
방안 1: RPROMPT 사용을 그만두고, ANSI 이스케이프 시퀀스로 무리하게 제어하고 그리기
조금 이런 방법 밖에 모릅니다.
.zshrc
를 다음과 같이 합니다.
# 出したい情報をCUSTOM_RPROMPTに格納しておく
print_to_rprompt() {
col=$(( COLUMNS - 8 ))
print -Pn "\e7\e[1A\e[${col}G${CUSTOM_RPROMPT}\e8"
}
TMOUT=1
TRAPALRM() {
print_to_rprompt
}
COLUMNS
는 윈도우 폭이 들어 있는 zsh의 환경 변수입니다.
오른쪽으로 내는 문자를, 선두에 반각 스페이스를 삽입하는 것으로, 모두 8문자에 통일한 다음에 위와 같이 실장했습니다.
제어 코드에 의한 조작의 설명을 합니다.
# 出したい情報をCUSTOM_RPROMPTに格納しておく
print_to_rprompt() {
col=$(( COLUMNS - 8 ))
print -Pn "\e7\e[1A\e[${col}G${CUSTOM_RPROMPT}\e8"
}
TMOUT=1
TRAPALRM() {
print_to_rprompt
}
그리고,
TRAPALRM
그리고 이것을 1 초마다 실행합니다.즉, 초당 print로 내고 싶은 정보를 계속 내보내는 것입니다.
git의 status와 시간을
RPROMPT
에 내고 싶습니다만, 이 방법이라면 프롬프트의 우측의 정보는 보관 유지되지 않고 항상 재기록되기 때문에, 시각은 PROMPT
에 우울해 git의 status만 표시하도록 했습니다.다음과 같은 느낌이 듭니다.
매초 갱신하는 당, 본래의
RPROMPT
와는 기능이 다르고 버립니다만, git의 status를 리얼타임으로 갱신해 표시해 주기 때문에 오히려 마음에 들었습니다.방안 2: PROMPT에 필요한 공간만 계산하고 삽입
이것도 가능합니다. 이쪽이 본래 하고 싶었던 것에 가까울지도.
단지 이번은 안 1로 했습니다.
방안 3: tmux 사용
tmux로
status-position top
로 할 수 있는 것 같습니다.tmux로 할까. .
요약
시행착오하는 동안 다음과 같은 프롬프트가 생겼습니다.
뭔가 다른 좋은 방법이 있으면 꼭 가르쳐 주셨으면합니다. .
Reference
이 문제에 관하여(zsh로 프롬프트의 오른쪽 부분을 무리하게도 선행에 표시하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tachibanayu24/items/c61a0c93e74efd454d0b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)