如何在「對話方塊」中插入製表符?

如何在「對話方塊」中插入製表符?

我正在使用 Linux“對話框”實用程式來創建一個簡單的 UI。但是,資訊框中有一個文本,我想插入製表符以便正確對齊文本。

但該對話框似乎不接受製表符。此外,--tab- Correct 選項沒有幫助。如果我寫 \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-vTab按鍵。

答案2

好吧,我不知道對話框,但有時在 Linux 中,當 \t 不解釋為 Tab 時,請嘗試

"`echo -e "\t"`"

嘗試這個:

declare -r TAB="`echo -e "\t"`"
echo -e "A${TAB}B"

答案3

你所說的顯示為單一空格的命令字串在這裡顯示為 8 個空格,而不是製表符(但也許這就是 StackExchange)。

調試這個可能有點棘手。有幾個東西可能會也可能不會“烹飪”選項卡:插入字符時的終端; shell,處理輸入時;底層終端模式(熟模式與原始模式),以及最後的對話方塊本身。

更令人困惑的是,如果您使用 echo 產生選項卡,或以其他方式產生選項卡,則終端模擬器仍有可能決定將其清除。

轉義此類控製字元的常見擊鍵是C-v(即Control+V, CTRL+V)。如果你點擊那個,然後製表符,你可能會插入一個真正的製表符。在這裡,使用 GNUbashurxvt,它可以工作。

正確調試這需要了解確切地問題是什麼(即是什麼在吃標籤)。除非dialog您的 shell 具有翻譯這些轉義序列的功能,否則簡單地將 \t 放在那裡是行不通的。如果您想要這些,請遵循 @Eran Ben-Natan 的建議並使用 GNUecho的增強模式(其他實作可能會有所不同- POSIX 中沒有指定特定行為(IEEE 1003.1 2008,第2615 頁,第84306 行)) 。

相關內容