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?

majkinetor
sumber
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.

Dennis
sumber
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...)

thrig
sumber