Bash 프롬프트의 readline 모드 문자열 길이

Bash 프롬프트의 readline 모드 문자열 길이

bash 프롬프트 앞에 인쇄되는 readline의 모드 문자열(예: @또는 (cmd)또는 ) 의 길이를 어떻게 알 수 있나요 ? (ins)이 모드 문자열은 다음에 의해 활성화됩니다.set show-mode-in-prompt on안에 .inputrc.

내에서 이 문자열의 길이를 확인하고 싶습니다 $PROMPT_COMMAND.

tput프롬프트 내부에서 커서를 이동하여 터미널 오른쪽에 일부 정보를 인쇄한 다음(필요한 경우 덮어쓸 수 있도록) 왼쪽에서 프롬프트 인쇄를 재개하려고 합니다 . 모드 문자열의 길이를 고려하십시오.

모드(예:)를 접두사로 변경 하면 다시 호출 되고 $PROMPT_COMMAND프롬프트가 다시 인쇄됩니까 ?emacs-mode-stringvi-ins-mode-string

답변1

모드 문자열 길이에 관한 질문에 대한 답변은 아니지만 해결 방법은 다음과 같습니다.

나는 결국 사용했다ANSI CSI 코드커서 위치를 저장하고 복원합니다. (포인터에 대해 @tripleee에게 감사드립니다).

PS1=$(getColumn)다음 을 getColumn기반으로 시도한 다양한 항목을 사용하여 커서 위치를 가져오려고 연결하는 경우에도 여전히 모드 문자열의 길이를 찾을 수 없습니다.

ANSI CSI 코드를 사용한 해결 방법은 다음과 같습니다."프롬프트의 일부를 오른쪽 정렬"에 대한 답변.

단일 하위 프로세스 없이 이 작업을 수행하고 shellcheck깨끗하게 만들 수 있었기 때문에 해결 방법에 매우 만족합니다.

관련 정보