Detectando as configurações do Tabstop do Terminal


2

Eu estou escrevendo um pequeno programa que precisa quebrar o texto para produzir saída de várias colunas em uma tela de terminal. Isso é bastante simples, exceto por ter que levar em conta guias difíceis, o que não posso fazer sem saber quais são as configurações de parada de tabulação. Existe uma maneira de consultar as configurações de parada de tabulação? No OSX o tabs comando parece definir guias, mas não parece relatá-las. Eu posso possivelmente analisar infocmp saída para o it valor, mas que parece ser apenas a largura da guia padrão, que pode ou não alinhar com o conjunto completo de paradas de tabulação.

Existe uma maneira canônica de extrair as configurações de parada de tabulação em terminais semelhantes a unix? No Windows?

Respostas:


4

o tabs O programa usa dados do banco de dados do terminal para informar ao terminal quais paradas de tabulação devem ser usadas.

O computador não sabe sobre as paradas de tabulação: usando stty você pode definir o driver de terminal para usar guias de hardware ou soft (a expansão usual de 8 colunas por parada de tabulação). Se você definir as guias hard / soft, a maioria dos aplicativos no sistema assumirá 8, de qualquer maneira.

O banco de dados do terminal não fornece uma maneira padrão para determinar que as paradas de tabulação estão definidas para. Para as emulações VT100 amplamente utilizadas no xterm, etc., é possível para determinar essas informações usando o relatório de posição do cursor. Alguém poderia escrever um aplicativo que escrevesse guias, usasse o relatório de cursor para ver onde o cursor terminava e computasse as paradas de tabulação. (O resize programa usa o relatório de posição do cursor para determinar o tamanho da tela).

banco de dados do terminal do ncurses fornece u6 recursos que tentam descrever os relatórios de posição do cursor, mas, para fins práticos, somente os relatórios no estilo VT100 são suportados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.