st端子+シェルviモード

st端子+シェルviモード

コンテキスト: 私はzshを使用し、vi編集モードを使用します。履歴に上がるには、ESC通常モードに入ってからを押すのではなく、[文字の送信]をタップしてkPostScriptを送信します(私は理解しています)alt+kesck

質問: SSHセッションを開始するまでは正常に機能し、セッションを閉じた後も機能しません。代わりにを押すと文字がalt+k挿入されますë

現在の理解: これはシェルではなく端末に関連しています。ただし、SSHセッションを開くと、私が考えることができない端末のいくつかのランタイム属性が変更されます。

st git commit: 63776c0962874dfab135a595a765b4d3b5fbcb65 (現在のメジャーバージョン)

役に立つアイデアがあれば大変感謝します。

PS:私は端末が内部的にどのように機能するのかほとんどわかりません。

ベストアンサー1

7ビット文字セットを使用し、文字の上位ビットを自由に変更できると仮定する「メタ」を言う古い方法があります。実際、UTF-8はもちろん、8ビット文字セットもうまく処理できず、結果の文字は見てわかるように一般人に混乱を与えます。 XTermやSimple Terminalを含む一部の端末エミュレータのみがサポートされており、ECMA-48ベンダー固有の設定/リセットモード制御シーケンス(パラメータ1034)を介してオンとオフを切り替えることができます。 terminfoという用語では、これは「メタモード」です。

SSH経由でアクセスするリモートシステムのプログラムには、何らかの理由で「メタモード」がオンになっており、再びオフになりません。 DECRST 1034制御シーケンスを直接印刷してメタモードをオフにすることができますprintf

printf '\e[?%ul' 1034
または(terminfoバージョン)tputコマンドを使用します。

出力パワー

注:kbdパッケージ(Debian Linuxなどのオペレーティングシステム)のコマンドが機能することを期待しないでくださいsetmetamode。これは、Linuxの組み込み仮想端末に固有のモードを変更する特別な方法を使用しているためです。

おすすめ記事