Linux端末では、 "cat> file.txt"を使用して一度に1行ずつファイルを生成します。
1行あたりの削除キーは機能しますが、矢印キーは行から左右に移動するのではなく、エスケープコードを挿入することがわかりました。
なぜこれですか?基本的な端末操作に左右の矢印キーが使用できない理由はありますか?私はこれを行うことができるGNU readlineのようなものがあることを知っていますが、私の質問はそれとは何の関係もありません。
ベストアンサー1
端末ドライバのライン編集機能は非常に原始的でいいえこれには、挿入点を左右に移動するなどの操作が含まれます。
彼らの仕事には以下が含まれます:
- 最後の文字を削除する(
VERASE
/erase
、BackSpace) - 最後の単語を削除(
VWERASE
/werase
、Control-W) - 全行を削除(
VKILL
/kill
、Control-U)
さらに、複数のキーシーケンス(通常は左右の矢印キーに送信されるエスケープ文字)を特別なタスクにバインドすることはできません。
もちろん、UnicodeVERASE
はVWERASE
サポートしていません。 Linuxには形式的なIUTF8
フラグ(単純なデータに対して動作するので何もないよりも優れています)がありますが、幅が0の修飾子、方向フラグなどについてはわかりません。
詳細については、stty(1)
およびマンページを参照してください。termios(3)