Posso definir charset's (in e out) em 'less'?

5

Eu posso dizer less para caracteres de saída em UTF-8:

export LESSCHARSET=UTF-8

Mas então ele tenta ler arquivos como UTF-8 também.

Posso dizer para ler arquivos como ISO-8859-2 (latin2), mas exibi-los como UTF-8, como faço em vim com enc e fenc configurações?

    
por cprn 24.02.2016 / 14:15

1 resposta

1

Parece que não é possível. Como uma solução alternativa parcial, você pode usar iconv como um pré-processador de entrada da seguinte maneira.

  1. Crie o seguinte script executável, diga less_conv.sh :
    #!/bin/sh
    iconv -f $IN_ENC -t $OUT_ENC $1
    
  2. Defina e exporte a variável LESSOPEN :
    export LESSOPEN="|-less_conv.sh %s"
  3. Invoque less dessa maneira:
    IN_ENC=latin2 OUT_ENC=utf8 less somefile
    Você também pode definir seus valores preferidos:
    export IN_ENC=latin2
    export OUT_ENC=utf8
    less somefile

O caractere de canal | in LESSOPEN salva a necessidade de um arquivo intermediário temporário. O traço - habilita esse pré-processador quando less lê a entrada padrão.

Limitação:
O pré-processador é chamado apenas uma vez, mesmo que você atinja F ou R , portanto, não será possível usar essa solução alternativa para arquivos em crescimento ou entrada padrão de "streaming".

    
por 06.03.2016 / 22:13