私は見つけた
setterm -regtabs 4
xtermまたはurxvtでは機能しません。
しかし、これは
xterm_set_tabs () {
TERM=linux;
export $TERM;
setterm -regtabs 4
}
問題を回避します。
しかし、私はこれが次善策だと思います。なぜなら(1)他に説明できないgfxのバグにぶつかったからです(少なくとも正しいタブの内容を得れば可能性は排除されます)。学校SolarisにSSHでアクセスして実行しましたが、emacs -nw
「linux」がわからないというメッセージが出ました!だからもう一度「xterm」に置き換える必要があります。もちろん、常に同じ端末を使用しているので、これは愚かなことです。
また、タブにまったく依存しないのは良い経験則です!
ベストアンサー1
このsetterm
ユーティリティは、Linuxコンソールで使用するように設計されています。 ~によるとconsole_codes のマニュアルページ:
Linuxコンソールは、VT102およびECMA-48 / ISO 6429 / ANSI X3.64ターミナルコントロールのほとんどのサブセットだけでなく、カラーパレット、文字セットマッピングなどを変更するための特定のプライベートモードシーケンスも実装しています。
/* -regtabs. */
if (ctl->opt_regtabs && vc_only(ctl, "--regtabs")) {
int i;
fputs("\033[3g\r", stdout);
for (i = ctl->opt_rt_len + 1; i <= TABS_MAX; i += ctl->opt_rt_len)
printf("\033[%dC\033H", ctl->opt_rt_len);
putchar('\r');
}
xtermが実装しているので、xtermで動作します。VT100コントロール(およびその他)。
については大規模サブセット、これは議論の余地があります。プロジェクトをすばやく計算すると、console_codes
79の制御シーケンスが表示されます。これは、xterm FAQで文書化されたxtermのようなものよりはるかに低いです。数制御を使用したバージョンの比較。 79はそれ自体ではそれほど大きくありません。 VT102自体(xtermに似ています)には104があります。 ISO-6429(別名ECMA-48)は20のパターンと162のシーケンスを記録しました。合計が182であれ162であれ、50%はそうではありません。大規模サブセット。
Linuxコンソールユーティリティを使用することに加えて、より移植可能なオプションがあります:tabs
ユーティリティ(POSIXそしてソラリス)。それncursesユーティリティ(おそらくLinuxシステムにインストールされているでしょう)。
質問に提供されている例では、次のようにできます。
tabs -4
ハードコーディングの代わりにターミナルデータベースを使用します。タブとそれを設定する制御シーケンスは、ECMA-48および他の場所に文書化されています。用語情報(5)マンページ。
そしてtabs
xtermで使用されます。