zsh: 사용자가 화살표 키를 사용하여 줄 중간에서 편집할 수 있도록 허용하면서 프롬프트에서 화면을 지우지 않고 줄을 읽습니다.

zsh: 사용자가 화살표 키를 사용하여 줄 중간에서 편집할 수 있도록 허용하면서 프롬프트에서 화면을 지우지 않고 줄을 읽습니다.

Bash를 사용하면 tput cup 0 0; read -e -p "Enter input: " userinput사용자 입력 줄을 가져오는 것이 잘 작동합니다 .

  • 프롬프트 아래 화면이 지워지지 않습니다.
  • 사용자는 화살표 키를 사용하여 줄 중앙으로 이동하고 입력하는 동안 실수를 편집할 수 있습니다.

zsh에서 이를 달성하는 방법은 무엇입니까? 나는 두 가지 기술을 시도했습니다. 프롬프트 아래의 화면을 지우거나 화살표를 사용하여 편집을 위해 행 중앙으로 돌아가는 것을 허용하지 않습니다.

  1. 사용 vared:
tput cup 0 0; userinput=""; vared -p "Enter input: " userinput

vared프롬프트 아래의 화면을 지우는 것처럼 보이므로 프롬프트를 표시하기 전에 전체 화면이 지워집니다.

  1. 사용 read:
tput cup 0 0; printf "Enter input: "; read -r userinput

이는 프롬프트 아래의 화면을 지우지는 않지만 화살표 키를 사용하여 줄 중간으로 이동하여 편집하는 것을 허용하지 않습니다. ("삭제" 키는 작동하지만 사용자가 해당 지점부터 모든 것을 삭제하고 다시 입력해야 합니다( 오타).

탈출구가 있나요? 어쩌면 아래에 줄이 없다고 vared를 속여서 한 줄(프롬프트 줄)만 지울 수도 있습니다. zsh에서 가능하지 않은 경우 화면 첫 번째 줄에서 사용자 입력을 얻는 외부 POSIX 방식을 사용하고 싶습니다.

관련 정보