如何在“对话框”中插入制表符?

如何在“对话框”中插入制表符?

我正在使用 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)。如果你点击那个,然后制表符,你可能会插入一个真正的制表符。在这里,使用 GNUbashurxvt,它可以工作。

正确调试这需要了解确切地问题是什么(即是什么在吃标签)。除非dialog您的 shell 具有翻译这些转义序列的功能,否则简单地将 \t 放在那里是行不通的。如果您想要这些,请遵循 @Eran Ben-Natan 的建议并使用 GNUecho的增强模式(其他实现可能会有所不同 - POSIX 中没有指定特定行为(IEEE 1003.1 2008,第 2615 页,第 84306 行))。

相关内容