Como inserir o caractere de tabulação na “caixa de diálogo”?

3

Estou usando o utilitário "dialog" do Linux para criar uma interface simples. No entanto, há um texto na caixa de informações e quero inserir caracteres de tabulação para alinhar corretamente o texto.

Mas parece que essa caixa de diálogo não aceita caracteres de tabulação. Além disso, a opção --tab-correct não ajudou. Se eu escrevo, ele aparece em \ t na infobox.

dialog --title "Hello" --tab-correct --infobox "tab \t test" 20 100

Se eu inserir uma guia na string de comando:

dialog --title "Hello" --tab-correct --infobox "tab         test" 20 100

aparece como um espaço único.

Existe uma maneira de inserir a guia no texto da caixa de informações?

    
por Nuclear 04.04.2012 / 08:56

3 respostas

1

Você deve usar a opção --no-collapse , em vez de --tab-correct , e inserir guias literais na sua string, por exemplo, com

"star "$'\t'" end" 

ou usando Ctrl - v e pressionando a tecla Tab .

    
por 04.04.2012 / 14:09
1

Bem, eu não sei de diálogo, mas às vezes no Linux quando não se interpreta como Tab, tente

"'echo -e "\t"'"

Tente isto:

declare -r TAB="'echo -e "\t"'"
echo -e "A${TAB}B"
    
por 04.04.2012 / 10:12
1

A string de comando que você diz que aparece como um único espaço está aparecendo como 8 espaços aqui, não uma tabulação (mas talvez seja o StackExchange).

Depurar isso pode ser um pouco complicado. Existem várias coisas que podem ou não "cozinhar" abas: o terminal, ao inserir o caractere; o shell, ao processar a entrada; o modo de terminal subjacente (modo cozido vs. modo cru) e, no final, o próprio diálogo.

Para tornar as coisas ainda mais confusas, se você usar echo para gerar uma tabulação, ou se de alguma forma você gerar uma tab, ainda há uma chance de o emulador de terminal decidir eliminar isso.

Um pressionamento de tecla comumente visto para escapar desse tipo de caracteres de controle é C-v (ou seja, Control+V , CTRL+V ). Se você acertar isso, em seguida, guia, você pode obter uma guia real inserida. Aqui com o% GNUbash e urxvt , funciona.

Depurar adequadamente isso requer conhecer exatamente qual é o problema (ou seja, o que está comendo na guia). Simplesmente colocando \ t, não funcionará a menos que dialog ou seu shell tenham o recurso para traduzir essas seqüências de escape. Se você quiser, siga o conselho do @Eran Ben-Natan e use o modo aprimorado do GNU echo (outras implementações podem diferir - não há nenhum comportamento específico especificado em POSIX (IEEE 1003.1 2008, página 2615, linha 84306)) .

    
por 04.04.2012 / 11:39

Tags