menos no resalta la búsqueda

11

Algo sucedió, así que ya no veo menos reflejos. He intentado:

  • utilizando diferentes terminales.
  • usando la -gopción
  • asegurándose de que -Gno esté allí
  • ^ K mientras busca
  • ESC-U

Nada ayuda.

Trabajo en Ubuntu 12.10 en un escritorio i3. $TERM=screen-256. Cuando uso ^ ALT 1para cambiar a TTY1 y man manpuedo ver que destaca tanto los parámetros man como los patrones de búsqueda.

¿Qué más puedo hacer para arreglarlo?

majkinetor
fuente
1
¿Qué estableció la variable TERM en ese valor? ¿Estás usando la pantalla?
Dennis

Respuestas:

3

El resaltado en TTY1 funciona ya que establece la variable TERM en un valor adecuado.

Si estás usando la pantalla:

Cambie la variable TERM a un valor apropiado (p. Ej., Screen o screen-256color ). Verifique su ~ / .screenrc personal o el sistema / etc / screenrc en todo el sistema y arregle la línea correspondiente.

En mi versión de less, el valor screen-256 debería dar como resultado un error:

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

Si no estás usando la pantalla:

La pantalla * solo se interpreta correctamente por pantalla.

El valor correcto para TERM depende de su emulador de terminal y, por lo general, debe establecerlo. El valor predeterminado de los tres emuladores de terminal preinstalados de Ubuntu es xterm .

Ejecutar

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

compruebe si el valor de TERM se anula en los archivos de configuración de su shell.

Dennis
fuente
3
echo $ TERM en TTY1 también vuelve a ejecutar 'screen-256 color'. Pero cambiar TERM a 'xterm' lo resalta nuevamente.
majkinetor
2

Bueno, esto es molesto. ¿Que esta pasando aqui? (en tmuxdebajo iTerm.app)

$ echo test > test ; echo $TERM
screen

y luego con alguna grabación

$ 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 ...

y ahora miramos los códigos utilizados

$ 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
$ 

los 1b 5b ...códigos pueden hacerse más inteligibles consultando la documentación de las secuencias de control de xterm o uno puede manipular manualmente las secuencias para ver cuál TERM=xtermestá causando el resaltado

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

que el TERM=screencaso no hace, por las secuencias de control de documentos que es un inverso

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

y cerca de ese documento, podemos aprender que el screenterminal \033[3mes para cursiva y \033[23m no cursiva .

Este hallazgo da algunas opciones; podríamos configurar el terminal para que muestre texto en cursiva, o podríamos tratar de hacer que el screenterminal use los códigos inversos en lugar de la cursiva. (Algunas excavaciones en los less(1)documentos no mostraron ninguna perilla clara de "usar inverso en lugar de cursiva" para manipular). (Además, algunos terminales pueden ofrecer soporte para traducir X a Y, verifique los documentos del terminal para más detalles) (o podría pruebe con un emulador de terminal diferente y vea qué hace ...)

Wow el texto en cursiva es feo . Intentemos en cambio cambiar los screenusos de los códigos a inversa. Obviamente, esto implica la base de datos terminfo(o posiblemente termcap), que puede exportarse infocmp(1)y compilarse mediantetic(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,
$ 

Así que supongo que smsose está utilizando dado que xtermusa \E[7my screen \E[3m; de acuerdo con terminfo(5)esto es "modo destacado" y se combina con el reverso rmso; cambiemos esos a lo que xtermusa ...

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

Hey, eso se ve mejor ahora (pero tendrá que hacerse en todos los hosts para el archivo screeno lo terminfoque sea ...)

thrig
fuente