menos não destaca a pesquisa

11

Algo aconteceu, então não vejo mais menos destaques. Eu tentei:

  • usando terminal diferente.
  • usando a -gopção
  • certificando- -Gse de que não existe
  • ^ K durante a pesquisa
  • ESC-U

Nada ajuda.

Eu trabalho no Ubuntu 12.10 em um desktop i3. $TERM=screen-256. Quando eu uso ^ ALT 1para alternar para TTY1 e man manconsigo ver que ele destaca os parâmetros man e os padrões de pesquisa.

O que mais posso fazer para corrigi-lo?

majkinetor
fonte
1
O que definiu a variável TERM para esse valor? Você está usando a tela?
Dennis

Respostas:

3

O destaque em TTY1 funciona, pois define a variável TERM para um valor adequado.

Se você estiver usando a tela:

Altere a variável TERM para um valor adequado (por exemplo, screen ou screen-256color ). Verifique seu ~ / .screenrc pessoal ou o / etc / screenrc em todo o sistema e corrija a linha correspondente.

Na minha versão de less, o valor screen-256 realmente resulta em um erro:

WARNING: terminal is not fully functional
-  (press RETURN)

Se você não estiver usando a tela:

A tela * só é interpretada corretamente pela tela.

O valor correto para TERM depende do seu emulador de terminal e geralmente deve ser definido por ele. O padrão dos três emuladores de terminal pré-instalados do Ubuntu é xterm .

Executar

grep -R TERM= ~/.* /etc 2> /dev/null

verifique se o valor do TERM é substituído nos arquivos de configuração do seu shell.

Dennis
fonte
3
echo $ TERM no TTY1 também executa novamente a 'tela 256 cores'. Mas alterar TERM para 'xterm' destaca novamente.
majkinetor
2

Bem, isso é chato. O que está acontecendo aqui? (em tmuxbaixo iTerm.app)

$ echo test > test ; echo $TERM
screen

e depois com algumas gravações

$ script withscreen
Script started, output file is withscreen
$ less -p test test
... q to quit and then exit the shell session ...

$ script withxterm
Script started, output file is withxterm
$ TERM=xterm less -p test test
... q and exit again ...

e agora olhamos para os códigos usados

$ grep test withscreen | hexdump -C
00000000  24 20 6c 65 73 73 20 2d  70 20 74 65 73 74 20 74  |$ less -p test t|
00000010  65 73 74 0d 0d 0a 1b 5b  33 6d 74 65 73 74 1b 5b  |est....[3mtest.[|
00000020  32 33 6d 0d 0a 1b 5b 35  3b 31 48 1b 5b 33 6d 74  |23m...[5;1H.[3mt|
00000030  65 73 74 1b 5b 32 33 6d  0d 0a 1b 5b 33 38 3b 31  |est.[23m...[38;1|
00000040  48 1b 5b 33 6d 74 65 73  74 20 28 45 4e 44 29 1b  |H.[3mtest (END).|
00000050  5b 32 33 6d 1b 5b 4b 0d  1b 5b 4b 1b 5b 3f 31 6c  |[23m.[K..[K.[?1l|
00000060  1b 3e 24 20 5e 44 0d 0d  0a                       |.>$ ^D...|
00000069
$ grep test withxterm | hexdump -C
00000000  24 20 54 45 52 4d 3d 78  74 65 72 6d 20 6c 65 73  |$ TERM=xterm les|
00000010  73 20 2d 70 20 74 65 73  74 20 74 65 73 74 0d 0d  |s -p test test..|
00000020  0a 1b 5b 37 6d 74 65 73  74 1b 5b 32 37 6d 0d 0a  |..[7mtest.[27m..|
00000030  1b 5b 35 3b 31 48 1b 5b  37 6d 74 65 73 74 1b 5b  |.[5;1H.[7mtest.[|
00000040  32 37 6d 0d 0a 1b 5b 33  38 3b 31 48 1b 5b 37 6d  |27m...[38;1H.[7m|
00000050  74 65 73 74 20 28 45 4e  44 29 1b 5b 32 37 6d 1b  |test (END).[27m.|
00000060  5b 4b 0d 1b 5b 4b 1b 5b  3f 31 6c 1b 3e 24 20 65  |[K..[K.[?1l.>$ e|
00000070  78 69 74 0d 0d 0a                                 |xit...|
00000076
$ 

os 1b 5b ...códigos podem ser tornados mais inteligíveis consultando a documentação das seqüências de controle xterm ou é possível mexer manualmente nas sequências para ver qual delas TERM=xtermestá causando o realce.

$ printf "\033[7mtest\033[27m\n"
test

o que o TERM=screencaso não faz, de acordo com as sequências de controle, o que é inverso

ESC [
     Control Sequence Introducer (CSI  is 0x9b).
...
CSI Pm m  Character Attributes (SGR).
...
            Ps = 7  -> Inverse.
...
            Ps = 2 7  -> Positive (not inverse).

e nas proximidades desse documento, podemos saber que o screenterminal \033[3mé para itálico e \033[23m não itálico .

Essa descoberta fornece algumas opções; podemos configurar o terminal para exibir texto em itálico ou tentar fazer com que o screenterminal use os códigos inversos em vez de itálico. (Algumas pesquisas nos less(1)documentos não mostraram botões claros "use inverso em vez de itálico".) (Além disso, alguns terminais podem oferecer suporte para a tradução de X para Y, verifique os documentos do terminal para obter detalhes.) (Ou você pode tente um emulador de terminal diferente e veja o que isso faz ...)

Uau, o texto em itálico é feio . Vamos tentar alterar os códigos screenusados ​​para inverso. Obviamente, isso envolve o terminfo(ou possivelmente termcap) banco de dados, que pode ser exportado via infocmp(1)e compilado portic(1)

$ TERM=screen infocmp > ti.screen ; TERM=xterm infocmp > ti.xterm
$ fgrep '\E[7' ti.xterm
        rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
        smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
$ fgrep rev= ti.screen
        nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
$ fgrep '\E[3m' ti.screen
        smso=\E[3m, smul=\E[4m, tbc=\E[3g,
$ 

Então, eu acho que o smsoestá sendo usado, dado que xtermusa \E[7me screen \E[3m; de acordo com terminfo(5)isso, é o "modo de destaque" e é emparelhado com o reverso rmso; vamos mudar isso para o que xtermusa ...

$ TERM=screen infocmp | sed -e 's/smso=[^,]*/smso=\\E[7m/;s/rmso=[^,]*/rmso=\\E[27m/' > foo
$ tic -o ~/.terminfo foo
$ rm foo

Ei, isso parece melhor agora (mas terá que ser feito em todos os hosts para o screenou qualquer outro terminfoarquivo ...)

agitar
fonte