我正在使用 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-v並Tab按鍵。
答案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
)。如果你點擊那個,然後製表符,你可能會插入一個真正的製表符。在這裡,使用 GNUbash
和urxvt
,它可以工作。
正確調試這需要了解確切地問題是什麼(即是什麼在吃標籤)。除非dialog
您的 shell 具有翻譯這些轉義序列的功能,否則簡單地將 \t 放在那裡是行不通的。如果您想要這些,請遵循 @Eran Ben-Natan 的建議並使用 GNUecho
的增強模式(其他實作可能會有所不同- POSIX 中沒有指定特定行為(IEEE 1003.1 2008,第2615 頁,第84306 行)) 。