Pergunta

Eu preciso transformar margens automáticas off de acordo com a seguinte declaração de Tela manual em meu Mac

Se o seu terminal é um "verdadeiro" terminal de auto-margem (que não permite a última posição na tela a ser atualizado sem rolagem da tela) considerar o uso de uma versão de seus terminais de TERMCAP que tem margens automáticas desligado.

Como você pode transformar margens automáticas fora por termcap do seu terminal?

Foi útil?

Solução

De acordo com a XTerm controle Seqüências , esta seqüência deve fazer o que foi perguntado:

CSI ? 7 l

Isto é,

printf '\033[?7l'

O 7 é documentado como

        Ps = 7  -> Wraparound Mode (DECAWM).

eo caráter final l (L minúsculo) denota isso como um reset em vez de um set controle.

Por alguma razão, o nome terminfo para isso é mais obscuro: "margens automáticas". Esses recursos terminfo lidar com o recurso (ver terminfo (5) ):

   auto_right_margin             am         am        terminal has auto‐
                                                      matic margins
   enter_am_mode                 smam       SA        turn on automatic
                                                      margins
   exit_am_mode                  rmam       RA        turn off automatic
                                                      margins

Curiosamente, descrição dos terminais da vt100-nam em ncurses (que, aparentemente, ninguém usa) inicializa o terminal para use automargins margens usando essa string:

rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 

(os conjuntos \E[?7h), e afirma que o terminal não use margens automáticas cancelando am . Ele também tem a rmam capacidades terminfo e smam. Então, você poderia fazer isso para provar que ele funciona:

tput rmam
stty columns 999
ps -efwwwwwl

e (para o usuário comum) ver a ps anúncio bem truncado contra a margem direita da janela do terminal.

O outro variantes vt220-nam e VT320-nam parece correcto ...

A propósito, para Mac , você usaria o terminfo nomes como rmcup em vez do termcap RA , porque OSX usa ncurses' tput (terminfo) em vez da variante BSD.

Além disso leitura:

Ocasionalmente alguém pergunta sobre como suprimir automargins porque eles supõem que os terminais podem pan / deslocamento para a esquerda / direita para mostrar a informação que não foi envolvido em uma nova linha. Terminais que fazem isso são raros, e OSX Terminal não é um dos os . Ele comporta-se como um subconjunto de xterm, que se emula a série de terminais DEC VT52 / VT100 / VT220 / etc. Em este pergunta, OP está preocupado / confundido sobre este parágrafo da screen manual:

Se o seu terminal é um "verdadeiro" terminal de auto-margem (que não permite que o última posição na tela para ser atualizado sem rolagem da tela) considerar o uso de uma versão do termcap do seu terminal que tem automático margens desligado. Isso irá garantir uma atualização precisa e optimizada dos a tela em todas as circunstâncias. A maioria dos terminais têm hoje em dia "mágica" margens (margens automáticas além de última coluna utilizável). Este é o VT100 Tipo de estilo e perfeitamente adequado para a tela. Se tudo que você tem é um "Verdadeira" tela do terminal auto-margem será conteúdo para usá-lo, mas atualizar um put personagem na última posição na tela não pode ser possível até que o ecrã se desloca ou o personagem é movido para um posição segura de alguma outra forma. Este atraso pode ser encurtado usando um terminal com capacidade de inserção de caracteres.

Isso última posição na tela refere-se ao canto inferior direito dao terminal. No caso normal, se o seu cursor estiver no canto inferior direito e você imprimir um personagem, você esperaria que o visor para rolar para cima por uma linha e mostrar o caráter na linha seguinte. Também (porque os terminais podem ser implementadas de diferentes maneiras), alguns pode rolar para cima quando você imprime um caráter no última posição . faz o VT100 não fazer isso. Não só não se deslocar para cima nesse caso, mas ignora caracteres não-impressão, enquanto em a margem (ver xterm FAQ Essa descrição da embalagem é estranho, dizer mais? ). Há uma xenl bandeira terminfo que está definida para mostrar quando o terminal faz este comportamento especial. Cerca de um terço das descrições do terminal no banco de dados do terminal tem essa bandeira. Enquanto a maioria dos que são para terminais que você provavelmente nunca encontro, ter em mente que o conselho na página de manual foi escrito para trás em uma era quando esses outros terminais eram tão provável de ser encontrado como um VT100-sósia. A mudança história inicial para a tela é pobre, mas o texto estava em segundo postagem de tela para Usenet em 1992. O lançamento inicial em 1987, disse algo parecido:

Tela Nunca escreve na última posição da tela, a menos que o boolean capacidade LP é encontrado na entrada do termcap do terminal. Usualmente, ecrã Não podemos prever se ou não um determinado pergaminhos terminal quando um personagem é escrito na última coluna da última linha; LP indica que é seguro para escrever nesta posição. Note que o LP capacidade é independente do am (automática margens); para determinados terminais, como o VT100, é razoável a set am , bem como LP na entrada termcap correspondente (O VT100 não move o cursor quando um personagem é escrito em a última coluna de cada linha).

A formulação mais tarde reflete o fato de que o sistema terminfo foi prevalente, eo nome LP não foi termcap nome escolhido para corresponder com xenl xn ).

O ponto de tudo isso é que as tentativas screen para converter entre programas de escrita para diferentes tipos de terminais e torná-los todos aparecem como um tipo de terminal - o que significa que ele tenta colocar um texto no visor do terminal de em todos os locais . O canto inferior direito é um problema porque alguns terminais iria rolar para cima, estragar a tentativa de escrever lá. Como solução, alguns terminais forneceu uma alternativa:

  • usando um modo diferente (de inserção),
  • colocar o cursor sobre o ao lado última posição do visor,
  • caracteres de escrita para preencher, empurrando um personagem para a última posição, e
  • sua vez insert-mode off uma vez que é feito (caso contrário um incômodo).

Cerca de dois terços das descrições no banco de dados do terminal tem a capacidade de fazer isso inserir-mode ( smir ). Que ainda não era perfeito, mas certamente valeu a pena mencionar, em 1992. Cerca de um quarto implementar um recurso semelhante semelhante ich1 . Alguns implementar ambos (e vi poderia ficar confuso por aqueles, tentando fazer ambos os métodos).

VT100-sósias fornecer uma terceira maneira de escrever essa última posição; cheques screen para e usa o que estiver lá.

Outras dicas

A maioria dos emuladores de terminais, incluindo o terminal mac padrão, não são "verdadeiros terminais de auto-margem", no sentido que está sendo discutido aqui - eles emular um terminal da série VT100, que teve envolvente "inteligente". Você pode verificar executando cat e digitação até o fim da última linha -. Após digitar o último caractere, os restos cursor no final da linha (com destaque para o personagem que você acabou de digitar) até que você digite outro personagem

A única conseqüência de um 'verdadeiro terminal de auto-margem' é que um personagem não pode ser exibida no canto inferior direito (embora alguns programas são capazes de trabalhar em torno disso, deslocando um personagem no lugar com ich / ich1)

Se eu entendi você está olhando para definir o recurso Autowrap de NO utilizando terminfo base de dados. Se assim for eu acredito que você pode usar o sinalizador -nam para desligá-lo - algo como vt100-nam deve fazê-lo. Você também pode verificar olhando para as páginas man para terminfo.

Se isso resolver o problema, marque isso. (^_^) Se não ... bem comentar de volta e eu vou verificar novamente para você. Felicidades!

Update: Há também um atalho que pode se aplicar a você para alternar o envoltório e desligando. Confira a folha de atalho aqui . E informações adicionais para o ecrã pode ser encontrada aqui (procurar envoltório). Você também pode verificar aqui sobre como utilizar setterm (seção 17.14 Mudando a Configurações de terminal). Verifique também aqui para exemplos de como alterar as configurações.

Boa sorte novamente. (^ _ ^)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top