명령줄/프롬프트가 손상되어 편집할 수 없습니다(WSL2).

명령줄/프롬프트가 손상되어 편집할 수 없습니다(WSL2).

WSL2와 함께 Windows 10을 사용하고 있습니다. 지금까지 시도한 모든 터미널에서 깨진 명령줄이 금세 발견되었습니다. Enter 키를 누르면 실제 명령이 다르게 나타나고, 명령 프롬프트의 일부가 삭제되고, 커서 위치가 편집되지 않고, 임의의 공백이 추가되는 등의 문제가 발생합니다. 오늘은 특히나 힘들었고 효율적으로 일하기가 어려웠습니다.

위/아래 화살표 키를 사용하여 기록을 스크롤한 후에 이런 일이 발생할 수 있습니다.
WSL을 다시 시작하고, 터미널을 지우고, 터미널을 다시 시작해도 도움이 되지 않았습니다.
그래서 재부팅 후 히스토리를 스크롤 해보니 붐!

문제를 해결하는 방법을 아시나요? 터미널에 대한 몇 가지 재설정 명령이 있다는 것을 읽었습니다. 재설정하는 방법? 아마도 이것이 도움이 될 수 있습니다 ...

다음은 단지 예입니다. 실행 후 git log...위쪽 화살표 키를 사용하여 명령으로 돌아가지만 명령 프롬프트의 끝 부분과 명령의 시작 부분이 부분적으로 손상되었습니다. 여기에 이미지 설명을 입력하세요.

[16:25:20] blade@DESKTOP-VQABTK7:/bytex/site$ echo $PS1; echo;
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

답변1

이는 Debian/Ubuntu/Mint 기본 프롬프트의 상당히 표준적인 색상 버전처럼 보입니다.

\[           # begin non-advancing characters
\e]0;        # escape sequence to update terminal title
\u@\h: \w    # sets title to <user>@<host>: <working directory>
\a           # end terminal title
\]           # end non-advancing characters
${debian_chroot:+($debian_chroot)} # if within a Debian chroot, name of the chroot env
\[           # begin non-advancing characters
\033[01;32m  # escape sequence to set colors
\]           # end non-advancing characters
\u@\h        # output <user>@<host> for the prompt
\[           # begin non-advancing characters
\033[00m     # escape sequence to set colors
\]           # end non-advancing characters
:            # output :
\[           # begin non-advancing characters
\033[01;34m  # escape sequence to set colors
\]           # end non-advancing characters
\w           # output current working directory
\[           # begin non-advancing characters
\033[00m     # escape sequence to set colors
\]           # end non-advancing characters
\$           # output $ if a regular user, or # if root
<space>      # output a space after prompt

터미널 제목도 비정방향 문자로 올바르게 계산됩니다.

그러나 이로 인해 다음과 같은 프롬프트가 표시됩니다(색상 없는 시뮬레이션).

blade@DESKTOP-VQABTK7:/bytex/site$ 

시작 부분의 타임스탬프는 어디에서 왔습니까?

결심 했나요 $PROMPT_COMMAND?

프롬프트를 깔끔하게 생성하려면 현재 프롬프트에 타임스탬프 접두사가 붙게 만드는 모든 해킹을 제거하고 다음 PS1설정을 시도해 보십시오.

PS1='[\t] \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

관련 정보