少不突出搜索


11

发生了什么事,所以我再也看不到更少的亮点了。我试过了:

  • 使用不同的终端。
  • 使用-g选项
  • 确保-G不存在
  • 搜索时的^ K
  • ESC--U

没有任何帮助。

我在i3桌面上的Ubuntu 12.10中工作。$TERM=screen-256。当我使用^ ALT 1切换到TTY1时man man我可以看到它突出显示了man参数和搜索模式。

我还能做些什么来解决它?


1
是什么将TERM变量设置为该值?您正在使用屏幕吗?
丹尼斯

Answers:


3

TTY1中的突出显示有效,因为它可以将TERM变量设置为适当的值。

如果您使用屏幕:

将TERM变量更改为适当的值(例如,screenscreen-256color)。检查您的个人〜/ .screenrc或系统范围的/ etc / screenrc并修复相应的行。

在我的less版本中,值screen-256实际上应该导致错误:

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

如果您不使用屏幕:

屏幕*只会收到屏幕正确解释。

TERM的正确值取决于您的终端仿真器,通常应通过它进行设置。Ubuntu的三个预装终端仿真器的默认值为xterm

执行

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

检查TERM的值是否在shell的配置文件中被覆盖。


3
在TTY1中回显$ TERM也会出现“ screen-256色”。但是将TERM更改为“ xterm”会再次突出显示它。
majkinetor

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斜体的,\033[23m 不是斜体的

这一发现提供了一些选择。我们可以将终端配置为显示斜体文本,或者我们可以尝试使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[7mscreen \E[3mterminfo(5)rmsoxterm

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

嘿,现在看起来好多了(但是必须在所有主机上完成for screen或其他terminfo文件...)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.