less tidak menyoroti pencarian


11

Sesuatu terjadi sehingga saya tidak melihat lebih sedikit highlight. Saya sudah mencoba:

  • menggunakan terminal yang berbeda.
  • menggunakan -gopsi
  • memastikan -Gtidak ada di sana
  • ^ K saat mencari
  • ESC-U

Tidak ada yang membantu.

Saya bekerja di Ubuntu 12.10 pada desktop i3. $TERM=screen-256. Ketika saya gunakan ^ ALT 1untuk beralih ke TTY1 dan man mansaya bisa melihat bahwa itu menyoroti ada parameter man dan pola pencarian.

Apa lagi yang bisa saya lakukan untuk memperbaikinya?


1
Apa yang mengatur variabel TERM ke nilai itu? Apakah Anda menggunakan layar?
Dennis

Jawaban:


3

Penyorotan dalam TTY1 berfungsi karena ia menetapkan variabel TERM ke nilai yang tepat.

Jika Anda menggunakan layar:

Ubah variabel TERM ke nilai yang semestinya (mis. Layar atau layar-256color ). Periksa ~ / .screenrc pribadi Anda atau seluruh sistem / etc / screenrc dan perbaiki baris yang sesuai.

Dalam versi saya yang kurang, nilai screen-256 seharusnya menghasilkan kesalahan:

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

Jika Anda tidak menggunakan layar:

The layar * hanya mendapatkan ditafsirkan dengan benar oleh layar.

Nilai TERM yang tepat tergantung pada emulator terminal Anda dan biasanya harus ditetapkan olehnya. Default dari tiga emulator terminal pra-instal Ubuntu adalah xterm .

Menjalankan

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

periksa apakah nilai TERM akan ditimpa dalam file konfigurasi shell Anda.


3
echo $ TERM in TTY1 juga mengulang 'layar-256 warna'. Tetapi mengubah TERM menjadi 'xterm' menyoroti lagi.
majkinetor

2

Nah ini menyebalkan. Apa yang terjadi disini? (di tmuxbawah iTerm.app)

$ echo test > test ; echo $TERM
screen

dan kemudian dengan beberapa rekaman

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

dan sekarang kita melihat kode yang digunakan

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

yang 1b 5b ...kode dapat dibuat lebih dimengerti oleh konsultasi xterm urutan kontrol dokumentasi atau satu dapat biola sekitar manual dengan urutan untuk melihat yang di bawah TERM=xtermyang menyebabkan penyorotan

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

yang TERM=screenkasusnya tidak lakukan, sesuai dengan urutan kontrol dokumen yang terbalik

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

dan dekat dari dokumen itu kita dapat belajar bahwa screenterminal \033[3madalah untuk Miring dan \033[23m Tidak dicetak miring .

Temuan ini memberikan beberapa opsi; kami mungkin mengonfigurasi terminal untuk menampilkan teks yang dicetak miring, atau kami malah bisa mencoba membuat screenterminal menggunakan kode terbalik alih-alih cetak miring. (Beberapa penggalian di dalam less(1)dokumen tidak menunjukkan tombol "gunakan kebalikan yang miring" yang jelas untuk mengutak-atik.) (Juga, beberapa terminal mungkin menawarkan dukungan untuk menerjemahkan X ke Y, periksa dokumen terminal untuk detail.) (Atau Anda bisa coba emulator terminal yang berbeda dan lihat apa yang dilakukan ...)

Wow teks yang dicetak miring jelek . Mari kita coba mengubah kode yang screendigunakan menjadi terbalik Ini jelas melibatkan terminfo(atau mungkin termcap) database, yang dapat diekspor melalui infocmp(1)dan dikompilasi olehtic(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,
$ 

Jadi saya kira smsosedang digunakan mengingat xtermkegunaan \E[7mdan screen \E[3m; menurut terminfo(5)ini adalah "mode menonjol" dan dipasangkan dengan terbalik rmso; mari kita ubah ke apa yang xtermmenggunakan ...

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

Hei itu terlihat lebih baik sekarang (tetapi harus dilakukan pada semua host untuk file screenapa pun terminfo...)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.