Macでtermcapによる自動マージンをオフにできない
質問
MacのScreenのマニュアルにある次のステートメントに従って、自動マージンをオフにする必要があります
端末が" true"の場合 自動マージン端末(許可しません 画面の最後の位置 画面をスクロールせずに更新される)バージョンの使用を検討する 端末のtermcapの 自動マージンがオフになっています。
端末のtermcapで自動マージンをオフにするにはどうすればよいですか
解決
XTermコントロールシーケンスによると、このシーケンスは要求されたとおりに実行する必要があります。
CSI ? 7 l
つまり、
printf '\033[?7l'
7 は次のように文書化されています
Ps = 7 -> Wraparound Mode (DECAWM).
および最後の文字 l
(小文字のL)は、これを set コントロールではなく reset として示します。
何らかの理由で、これのterminfo名はより不明瞭です:" automatic margins"。これらのterminfo機能は機能を処理します( terminfo(5)を参照)。
auto_right_margin am am terminal has auto‐
matic margins
enter_am_mode smam SA turn on automatic
margins
exit_am_mode rmam RA turn off automatic
margins
興味深いことに、ncursesの vt100-nam 端末の説明(明らかに誰も使用していない)端末を初期化して、使用この文字列を使用してマージンを自動マージンします:
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
( \ E [?7h
で設定)、および端末が am
をキャンセルすることで自動マージンを使用しないことをアサートします。また、terminfo機能 rmam
および smam
も備えています。そのため、これを実行して、機能することを証明できます。
tput rmam
stty columns 999
ps -efwwwwwl
および(通常のユーザーの場合)端末ウィンドウの右マージンに対してうまく切り捨てられた ps
リストを参照してください。
他のバリアントvt220-namおよびvt320-namは正しく表示されます...
ところで、 Mac では、 rmcup
などの terminfo の名前を使用します。 termcap RA
。OSXはBSDバリアントではなくncursesのtput(terminfo)を使用するため。
さらに読む:
端末が新しい行に折り返されていない情報を表示するために左/右にパン/スクロールできると想定しているため、オートマージンの抑制について尋ねられることがあります。これを行う端末はまれであり、OSX端末は those の1つではありません。 xtermのサブセットのように動作し、それ自体が一連のDEC端末vt52 / vt100 / vt220 / etcをエミュレートします。 this の質問では、OPは screen
マニュアルのこの段落について懸念/混乱しています:
端末が「true」の場合自動マージン端末(許可されていません 画面の最後の位置は画面をスクロールせずに更新されます) 自動機能を備えた端末のtermcapのバージョンの使用を検討する マージンがオフになりました。これにより、正確かつ最適な更新が保証されます すべての状況で画面。現在、ほとんどの端末には「マジック」があります。 マージン(自動マージンと使用可能な最後の列)。これはVT100です スタイルタイプで、画面に最適です。あなたが持っているすべてが " true"自動マージン端末画面はそれを使用するコンテンツですが、 画面の最後の位置に置かれた文字を更新しても、 画面がスクロールするか、キャラクターが 他の方法で安全な位置。この遅延は、 文字挿入機能を備えた端末。
画面の最後の位置は、端末の右下隅を指します。通常の場合、カーソルが右下隅にある場合
他のヒント
Macのデフォルト端末を含むほとんどの端末エミュレータは、「真の自動マージン端末」ではありません。ここで議論されている意味で-彼らは「スマート」を持っていたvt100シリーズ端末をエミュレートします包み込む。 cat
を実行し、最後の行の最後まで入力することで確認できます。最後の文字を入力した後、入力するまでカーソルは行の最後に残ります(入力した文字を強調表示します)別のキャラクター。
「真の自動マージン端末」の唯一の結果は、文字を右下隅に表示できないことです(一部のプログラムは、 ich
/ ich1
)
あなたが正しく理解していれば、terminfoデータベースを使用して自動折り返し機能をNOに設定しようとしています。もしそうなら、-namフラグを使用してオフにすることができると信じています-vt100-namのようなものがそれを行うべきです。 terminfoのmanページを見て確認することもできます。
これで問題が解決した場合は、マークアップしてください。 (^_^)そうでない場合は...コメントしてください。もう一度確認します。乾杯!
更新:ラップのオンとオフを切り替えるためのショートカットもあります。ショートカットシートをご覧くださいこちら。また、Screenの追加情報は、こちら(ラップを検索)にあります。 settermの使用方法については、こちらも確認できます(セクション17.14の変更端末設定)。設定の変更例については、こちらも確認してください。
また頑張ってください。 (^ _ ^)