기록을 스크롤할 때 여러 줄 명령으로 인해 커서 위치가 엉망이 되는 것을 어떻게 막을 수 있나요?

기록을 스크롤할 때 여러 줄 명령으로 인해 커서 위치가 엉망이 되는 것을 어떻게 막을 수 있나요?

관련된:기록을 탐색할 때 내 bash 프롬프트에 버그가 발생하는 이유는 무엇입니까?

역사는 다음과 같습니다:

 1831  git remote -v
 1832  gs 
 1833  gd 
 1834  gc -am 'moved apsum options etc to their own file
set routes to allow cors
changes to the apsum pull ' 
 1835  git push
 1836  reset
 1837  history
 1838  __git_ps1
 1839  reset
 1840  history
 1841  Kill 99894
 1842  history

g*모두 git 명령의 별칭입니다. 기록을 스크롤하면 숫자 1833에 도달할 때까지 모든 것이 괜찮습니다(밑줄은 커서 위치를 나타냄).

$ gd _
[ up arrow]
$ gds_
[up arrow]
$ gdit remote -v_

내 PS1에 인쇄되지 않는 문자 때문이라고 생각했지만 모든 항목을 괄호로 묶었습니다.

PS1="\n\[$FCYN\]\$(date +%H:%M:%S) \w\[$IGreen\]\$(__git_ps1)\[$Black\] $ \[$DarkGray\]"

내가 뭐 놓친 거 없니? 여러 줄의 커밋 메시지가 있을 때 이런 일이 발생합니까?

편집하다: 내 최종 솔루션이 너무 커서 댓글을 달 수 없습니다.

export PS1="\\n\[\033[38;5;246m\]\u@\[$(tput sgr0)\]\[\033[38;5;245m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;28m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\]\[$(tput sgr0)\]\[\033[38;5;2m\]`__git_ps1`\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;90m\]\t\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;232m\]\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\n\[$(tput sgr0)\]\[\033[38;5;0m\]\\$\[$(tput sgr0)\] "

이상해 보이지만 밝은 배경에서 읽기 쉬운 git 브랜치와 색상을 사용하여 멋진 프롬프트를 생성합니다(여기에서는 볼 수 없음).

collumj@machineName ~ (dev) 17:35:42  
$ 

많은 감사http://bashrcgenerator.com/.

답변1

"모든 것"은 괄호로 묶여 있지만 알려지지 않은 것이 몇 가지 있습니다. 열이 오른쪽으로 이동했기 때문에 이는 bash가 인식하지 못하는 텍스트가 전송되고 있음을 의미합니다.

로케일 불일치로 인해 이런 일이 발생할 수도 있지만 아마도 눈치채셨을 것입니다.저것.

귀하의 구성이 의 색상 기능을 사용하고 있지 않은지 확인하고 확인하겠습니다 __git_ps1. 에 따르면페도라라는 스크립트를 호출합니다.git-prompt.sh, 이는 ( set 을 설정한 경우 GIT_PS1_SHOWCOLORHINTS) 실제 열과 관련하여 bash를 혼동시킬 수 있는 이스케이프 시퀀스를 보낼 수 있습니다.

관련 정보