менше не виділяє пошук


11

Щось сталося, тож я більше не бачу менше світла. Я спробував:

  • за допомогою різних терміналів.
  • з використанням -gопції
  • переконайтесь, що -Gйого немає
  • ^ К під час пошуку
  • ESC-U

Ніщо не допомагає.

Я працюю в Ubuntu 12.10 на робочому столі i3. $TERM=screen-256. Коли я використовую ^ ALT 1для перемикання на TTY1 і чи man manможу я бачити, що він виділяє там і параметри людини, і моделі пошуку.

Що ще я можу зробити, щоб це виправити?


1
Що встановило змінну TERM на це значення? Ви використовуєте екран?
Денніс

Відповіді:


3

Виділення в TTY1 працює, оскільки він встановлює змінну TERM на належне значення.

Якщо ви використовуєте екран:

Змініть змінну TERM на потрібне значення (наприклад, екран або кольоровий екран 256 256 ). Перевірте свій особистий ~ / .screenrc або загальносистемний / etc / screenrc і зафіксуйте відповідний рядок.

У моїй версії менше значення screen-256 фактично має призвести до помилки:

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

Якщо ви не використовуєте екран:

Екран * тільки інтерпретується правильно екран.

Правильне значення TERM залежить від емулятора терміналу і зазвичай його слід встановити. За замовчуванням трьох попередньо встановлених емуляторів терміналу Ubuntu є xterm .

Виконати

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

перевірити, чи не перевищує значення TERM у файлах конфігурації вашої оболонки.


3
echo $ TERM у TTY1 також переносить "екран-256 кольорів". Але зміна терміна на 'xterm' підкреслює його знову.
майкінетор

2

Ну це дратує. Що тут відбувається? (в tmuxпід iTerm.app)

$ echo test > test ; echo $TERM
screen

а потім із деяким записом

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

а тепер ми розглянемо використані коди

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

ці 1b 5b ...коди можуть бути зроблені більш зрозумілими, ознайомившись з регуляторними послідовностями документації XTerm або можна вручну возитися з послідовностями , щоб побачити , який під TERM=xtermвикликає виділення

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

чого TERM=screenне робить, відповідно до контрольних послідовностей документів, що є зворотним

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

і неподалік від цього документа ми можемо дізнатися, що screenтермінал \033[3mпризначений для Italicized та \033[23m Not italicized .

Цей висновок дає деякі варіанти; ми можемо налаштувати термінал для відображення курсивного тексту, або ми могли б спробувати змусити screenтермінал використовувати зворотні коди замість курсиву. (Деякі копання в less(1)документах не показали чітких ручок "використовувати зворотні замість курсиву", щоб поспілкуватися.) (Також деякі термінали можуть запропонувати підтримку перекладу X на Y, перевірте деталі терміналів для деталей.) (Або ви могли спробуйте інший термінальний емулятор і подивіться, що він робить ...)

Нічого курсивний текст некрасивий . Давайте спробуємо замість цього зміни кодів screenвикористовувати на зворотні. Очевидно, це стосується terminfo(або, можливо, termcap) бази даних, яку можна експортувати за допомогою infocmp(1)і компілюватиtic(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,
$ 

Тож я б здогадався smso, що використовується, враховуючи, що xtermвикористовує \E[7mта screen \E[3m; відповідно до terminfo(5)цього є "режимом стояння" і поєднується з реверсом rmso; давайте змінимо їх на те, що xtermвикористовує ...

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

Гей, що зараз виглядає краще (але це доведеться робити на всіх хостах для файлу screenабо будь-якого іншого terminfo...)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.