私は簡単なUIを作成するためにLinuxの「ダイアログボックス」ユーティリティを使用しています。ところで、情報ボックスにテキストがありますが、テキストが正しく配置されるようにタブ文字を挿入したいと思います。
しかし、ダイアログはタブ文字を受け入れないようです。また、--tab-Corlectオプションは役に立ちません。 \t と書くと、情報ボックスの \t に表示されます。
dialog --title "Hello" --tab-correct --infobox "tab \t test" 20 100
コマンド文字列にタブ文字を挿入する場合:
dialog --title "Hello" --tab-correct --infobox "tab test" 20 100
別のスペースに見えます。
情報ボックスのテキストにタブ文字を挿入する方法はありますか?
答え1
--no-collapse
代わりにこのオプションを使用し--tab-correct
、文字列にリテラルタブ文字を挿入する必要があります。
"star "$'\t'" end"
またはCtrl- を使用しvてTabキーを押します。
答え2
さて、ダイアログについてはよくわかりませんが、Linuxでは\ tがTabとして解釈されない場合があります。
``echo -e "\t"`"
この試み:
declare -r TAB="`echo -e "\t"`"
echo -e "A${TAB}B"
答え3
ここでは、単一のスペースでマークされたコマンド文字列は、タブの代わりに8つのスペースで表示されます(ただしStackExchangeの場合もあります)。
これをデバッグするのは少し難しいかもしれません。タブを「クッキング」することもそうでないかもしれないいくつかのことがあります。つまり、文字を挿入するときの端末、入力を処理するときのシェル、基本端末モード(クッキングされた対生)、そして最後にダイアログボックス自体です。
状況をさらに混乱させることは、echoを使用してタブを作成したり、他の方法でタブを生成したりすると、端末エミュレータがタブを消去することを決定する可能性がまだあることです。
これらの制御文字をエスケープする一般的なキーストロークはC-v
(例えば、、Control+V
)CTRL+V
です。それをクリックしてからタブをクリックすると、実際のタブを挿入することもできます。ここではGNUbash
とを使ってurxvt
動作します。
適切なデバッグには理解が必要です。正確に問題は何ですか(つまり、ラベルを食べているものは何ですか)。dialog
シェルにこれらのエスケープシーケンスを変換する機能がない場合は、単に \t をそこに入れるだけでは機能しません。これをしたい場合は、@Eran Ben-Natanのアドバイスに従ってGNUecho
の高度なモードを使用してください(他の実装は異なる場合があります。POSIXには特定の動作はありません(IEEE 1003.1 2008、2615ページ、84306行))。