zsh:ユーザーが矢印キーを使用して行の途中で編集できるようにしながら、プロンプトから画面を消去せずに行を読み取ります。

zsh:ユーザーが矢印キーを使用して行の途中で編集できるようにしながら、プロンプトから画面を消去せずに行を読み取ります。

Bashを使用すると、tput cup 0 0; read -e -p "Enter input: " userinputユーザー入力行を取得するのがうまく機能します。

  • プロンプトの下の画面は消去されません。
  • ユーザーは矢印キーを使用して行の中央に移動し、入力中に間違いを編集できます。

zshでこれを達成するには?私は2つのスキルを試しました。プロンプトの下の画面を消去したり、矢印を使用して編集のために行の中央に戻ることはできません。

  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をだまして、1行(プロンプト行)だけを消去することができます。 zshで可能でない場合は、画面の最初の行でユーザー入力を取得する外部POSIX方式を使用したいと思います。

関連情報