ít không làm nổi bật tìm kiếm


11

Một cái gì đó đã xảy ra vì vậy tôi không thấy ít nổi bật hơn nữa. Tôi đã thử:

  • sử dụng thiết bị đầu cuối khác nhau.
  • sử dụng -gtùy chọn
  • đảm bảo -Gkhông có ở đó
  • ^ K trong khi tìm kiếm
  • ESC-U

Không có gì giúp được.

Tôi làm việc trong Ubuntu 12.10 trên máy tính để bàn i3. $TERM=screen-256. Khi tôi sử dụng ^ ALT 1để chuyển sang TTY1man mantôi có thể thấy rằng nó nổi bật ở đó cả tham số man và mẫu tìm kiếm.

Tôi có thể làm gì khác để sửa nó?


1
Điều gì đã đặt biến TERM cho giá trị đó? Bạn đang sử dụng màn hình?
Dennis

Câu trả lời:


3

Việc tô sáng trong TTY1 hoạt động vì nó đặt biến TERM thành một giá trị phù hợp.

Nếu bạn đang sử dụng màn hình:

Thay đổi biến TERM thành một giá trị phù hợp (ví dụ: màn hình hoặc màn hình - 256 màu ). Kiểm tra cá nhân của bạn ~ / .screenrc hoặc toàn hệ thống / etc / screenrc và sửa dòng tương ứng.

Trong phiên bản ít hơn của tôi, giá trị màn hình-256 thực sự sẽ gây ra lỗi:

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

Nếu bạn không sử dụng màn hình:

Các màn hình * chỉ nhận được giải thích một cách chính xác bởi màn hình.

Giá trị chính xác cho TERM phụ thuộc vào trình giả lập thiết bị đầu cuối của bạn và thường được đặt bởi nó. Mặc định của ba trình giả lập thiết bị đầu cuối được cài đặt sẵn của Ubuntu là xterm .

Hành hình

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

kiểm tra xem giá trị của TERM có bị ghi đè trong tệp cấu hình của shell không.


3
echo $ TERM trong TTY1 reterun 'screen-256 color'. Nhưng việc thay đổi TERM thành 'xterm' lại làm nổi bật nó.
Majkinetor

1

Vâng, điều này thật khó chịu. Chuyện gì đang xảy ra ở đây? (ở tmuxdưới iTerm.app)

$ echo test > test ; echo $TERM
screen

và sau đó với một số ghi âm

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

và bây giờ chúng tôi xem xét các mã được sử dụng

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

các 1b 5b ...mã có thể được hiển thị dễ hiểu hơn bằng cách tham khảo tài liệu trình tự điều khiển xterm hoặc người ta có thể tìm hiểu thủ công các trình tự để xem phần nào TERM=xtermgây ra sự nổi bật

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

điều mà TERM=screentrường hợp không làm, theo các trình tự kiểm soát tài liệu đó là một nghịch đảo

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

và gần đó từ tài liệu đó, chúng ta có thể biết rằng screenthiết bị đầu cuối \033[3mdành cho In nghiêng\033[23m Không in nghiêng .

Phát hiện này cung cấp một số tùy chọn; chúng tôi có thể định cấu hình thiết bị đầu cuối để hiển thị văn bản in nghiêng hoặc thay vào đó chúng tôi có thể cố gắng làm cho screenthiết bị đầu cuối sử dụng mã ngược thay vì in nghiêng. (Một số đào xung quanh trong các less(1)tài liệu không cho thấy bất kỳ "sử dụng nghịch đảo thay vì nghiêng" rõ ràng nút bấm thay vì chỉ violong với.) (Ngoài ra, một số thiết bị đầu cuối có thể cung cấp hỗ trợ cho các dịch X đến Y, kiểm tra tài liệu thiết bị đầu cuối để biết chi tiết.) (Hoặc bạn có thể thử một trình giả lập thiết bị đầu cuối khác và xem cái đó làm gì ...)

Wow chữ in nghiêng là xấu xí . Thay vào đó, hãy thử thay đổi mã screensử dụng thành nghịch đảo. Điều này rõ ràng liên quan đến cơ sở dữ liệu terminfo(hoặc có thể termcap), có thể được xuất qua infocmp(1)và được biên dịch bởitic(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,
$ 

Vì vậy, tôi đoán rằng smsođang được sử dụng cho rằng xtermsử dụng \E[7mscreen \E[3m; theo terminfo(5)đó là "chế độ nổi bật" và được ghép nối với đảo ngược rmso; Hãy thay đổi những thứ đó thành những gì xtermsử dụng ...

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

Bây giờ có vẻ tốt hơn (nhưng sẽ phải được thực hiện trên tất cả các máy chủ cho screenhoặc bất kỳ terminfotệp nào ...)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.