§을 통해 bash 프롬프트에서 두 문자를 삭제할 수 있는 이유는 무엇입니까?

§을 통해 bash 프롬프트에서 두 문자를 삭제할 수 있는 이유는 무엇입니까?

이것은 터미네이터에서 이상하고 매우 구체적인 문제입니다. 터미널 창에 문자 "§"를 입력한 다음 백스페이스를 두 번 누르면 항상 두 문자를 모두 삭제할 수 있습니다.심지어PS1 문자열의 일부인 경우.

재현 단계:

  1. 터미널에 "§"를 입력하세요.
  2. 2자를 삭제합니다.
  3. 반복하다.

답변1

터미널과 애플리케이션 로캘 간의 UTF-8 설정이 일치하지 않는 것 같습니다.

섹션 기호는 ASCII 문자 세트의 일부가 아니므로 UTF-8에서 2바이트로 표시됩니다. 귀하의 터미널이 이와 같이 메시지를 보낼 수도 있지만 애플리케이션 측은 그것이 한 문자만 나타내야 한다는 것을 인식하지 못하고 하나만 인쇄합니다. 명령줄 편집기는 입력한 문자 수를 추적하고 섹션 기호를 두 문자로 간주하므로 해당 문자만큼 백스페이스를 사용할 수 있습니다. 터미널은 그것이 단지 하나라는 것을 알고 이를 하나로 표시하고 백스페이스를 수행합니다.

관련 정보