我正在使用 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 行))。