端末で削除は機能しますが、矢印キーは機能しないのはなぜですか? [コピー]

端末で削除は機能しますが、矢印キーは機能しないのはなぜですか? [コピー]

Linux端末では、 "cat> file.txt"を使用して一度に1行ずつファイルを生成します。

1行あたりの削除キーは機能しますが、矢印キーは行から左右に移動するのではなく、エスケープコードを挿入することがわかりました。

なぜこれですか?基本的な端末操作に左右の矢印キーが使用できない理由はありますか?私はこれを行うことができるGNU readlineのようなものがあることを知っていますが、私の質問はそれとは何の関係もありません。

ベストアンサー1

端末ドライバのライン編集機能は非常に原始的でいいえこれには、挿入点を左右に移動するなどの操作が含まれます。

彼らの仕事には以下が含まれます:

  • 最後の文字を削除する(VERASE/ erase、BackSpace)
  • 最後の単語を削除(VWERASE/ werase、Control-W)
  • 全行を削除(VKILL/ kill、Control-U)

さらに、複数のキーシーケンス(通常は左右の矢印キーに送信されるエスケープ文字)を特別なタスクにバインドすることはできません。

もちろん、UnicodeVERASEVWERASEサポートしていません。 Linuxには形式的なIUTF8フラグ(単純なデータに対して動作するので何もないよりも優れています)がありますが、幅が0の修飾子、方向フラグなどについてはわかりません。

詳細については、stty(1)およびマンページを参照してください。termios(3)

おすすめ記事