meno non evidenzia la ricerca


11

È successo qualcosa, quindi non vedo più meno momenti salienti. Ho provato:

  • utilizzando un terminale diverso.
  • usando l' -gopzione
  • assicurarsi che -Gnon ci sia
  • ^ K durante la ricerca
  • ESC-U

Niente aiuta.

Lavoro in Ubuntu 12.10 su un desktop i3. $TERM=screen-256. Quando uso ^ ALT 1per passare a TTY1 e man manvedo che mette in evidenza sia i parametri man sia i modelli di ricerca.

Cos'altro posso fare per risolverlo?


1
Cosa ha impostato la variabile TERM su quel valore? Stai usando lo schermo?
Dennis,

Risposte:


3

L'evidenziazione in TTY1 funziona poiché imposta la variabile TERM su un valore corretto.

Se stai usando lo schermo:

Modificare la variabile TERM su un valore corretto (ad es. Schermo o schermo-256 colori ). Controlla il tuo ~ / .screenrc personale o il sistema / etc / screenrc a livello di sistema e fissa la riga corrispondente.

Nella mia versione di less, il valore screen-256 dovrebbe effettivamente causare un errore:

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

Se non stai usando lo schermo:

Lo schermo * viene interpretato correttamente solo dallo schermo.

Il valore corretto per TERM dipende dall'emulatore di terminale e di solito dovrebbe essere impostato da esso. L'impostazione predefinita dei tre emulatori di terminali preinstallati di Ubuntu è xterm .

Eseguire

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

controllare se il valore di TERM viene sovrascritto nei file di configurazione della shell.


3
echo $ TERM anche in 'screen-256 color'. Ma la modifica di TERM in "xterm" lo evidenzia di nuovo.
Majkinetor

2

Bene, questo è fastidioso. Cosa sta succedendo qui? (in tmuxsotto iTerm.app)

$ echo test > test ; echo $TERM
screen

e poi con qualche registrazione

$ 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 ora guardiamo i codici utilizzati

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

i 1b 5b ...codici possono essere resi più comprensibili consultando la documentazione delle sequenze di controllo xterm o si può armeggiare manualmente con le sequenze per vedere quale sotto TERM=xtermsta causando l'evidenziazione

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

cosa che TERM=screennon accade, secondo i documenti delle sequenze di controllo che è un contrario

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

e vicino a quel documento potremmo apprendere che il screenterminale \033[3mè in corsivo e \033[23m non in corsivo .

Questa scoperta offre alcune opzioni; potremmo configurare il terminale per visualizzare il testo in corsivo, oppure potremmo invece provare a fare in modo che il screenterminale utilizzi i codici inversi invece del corsivo. (Alcuni approfondimenti nei less(1)documenti non hanno mostrato alcuna chiara manopola "usa inversa invece del corsivo" con cui giocherellare.) (Inoltre, alcuni terminali possono offrire supporto per la traduzione da X a Y, controlla i documenti del terminale per i dettagli.) (O potresti provare un emulatore di terminale diverso e vedere cosa fa quello ...)

Wow, il testo in corsivo è brutto . Proviamo invece a cambiare i codici screenusati per invertire. Ciò comporta ovviamente il terminfo(o possibilmente termcap) database, che può essere esportato tramite infocmp(1)e compilato datic(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,
$ 

Quindi immagino che smsosia usato dato che xtermusa \E[7me screen \E[3m; secondo terminfo(5)questa è la "modalità straordinaria" ed è accoppiata con il contrario rmso; cambiamo quelli a ciò che xtermusa ...

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

Ehi, ora sembra meglio (ma dovrà essere fatto su tutti gli host per il file screeno qualunque terminfo...)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.