Dokumentasi tentang variabel LESS_TERMCAP_ *?

Jawaban:

45

Termcap adalah perpustakaan yang kurang digunakan untuk mengakses terminal. Termcap sebagian besar sudah usang, telah digantikan oleh Terminfo , tetapi Terminfo menawarkan antarmuka kompatibilitas Termcap untuk aplikasi. Less is content dengan antarmuka Termcap dan menggunakannya.

Perpustakaan Termcap adalah deskripsi dari fasilitas terminal. Setiap fasilitas diidentifikasi dengan kode dua huruf (atau lebih umum dua karakter). Misalnya, hcmengidentifikasi terminal hardcopy (yaitu printer, bukan layar); coadalah jumlah kolom; mdmulai menampilkan teks tebal. Setiap kapabilitas memiliki nilai, yang bisa berupa boolean (as with hc), integer (as with co) atau string (as with md). Banyak string adalah urutan melarikan diri yang dapat dikirim aplikasi ke terminal untuk mencapai efek tertentu.

Mengapa menghindari urutan? Karena antarmuka antara terminal dan aplikasi adalah aliran karakter (lebih tepatnya, satu aliran karakter di setiap arah: satu untuk input pengguna, satu untuk output untuk ditampilkan). Ketika suatu aplikasi menulis karakter ke terminal, biasanya ditampilkan. Beberapa karakter memiliki perilaku yang berbeda: mereka adalah karakter kontrol, yang melakukan hal-hal seperti memindahkan kursor, beralih atribut tampilan, dll. Ada lebih banyak perintah daripada karakter kontrol, sehingga sebagian besar perintah diakses oleh escape sequence, yang dimulai dengan karakter khusus (seringkali karakter pelarian, oleh karena itu namanya).

Misalnya, ketika Less ingin menampilkan beberapa teks tebal, ia mencari nilai mdkapabilitas. Ini adalah string, yang ditulis Less ke terminal. Terminal mengenali string ini sebagai urutan keluar, dan menyesuaikan status internalnya sehingga karakter selanjutnya akan ditampilkan dalam huruf tebal.

Pada masa awal terminal perangkat keras, berbagai merek memiliki urutan dan kemampuan keluar yang berbeda; basis data dan antarmuka Termcap diciptakan sehingga aplikasi tidak perlu tahu tentang setiap model terminal. Saat ini sebagian besar terminal emulator memiliki kemampuan yang sangat mirip, tetapi basis data Termcap atau Terminfo masih berguna untuk mengatasi perbedaan kecil.

The LESS_TERMCAP_*variabel dapat diatur dalam lingkungan atau di .lesskeyberkas . Ini memberikan kurang dengan nilai-nilai alternatif untuk kemampuan Terminal. Ketika Less ingin menggunakan kapabilitas terminal, katakan alihkan ke huruf tebal, pertama-tama ia memeriksa apakah ada LESS_TERMCAP_mdvariabel. Jika variabel ini ada, Less menggunakan nilainya sebagai urutan keluar untuk beralih ke cetak tebal. Jika tidak, ia menggunakan nilai dari basis data Termcap. Mekanisme ini memungkinkan pengguna untuk mengganti pengaturan basis data Termcap untuk Less.

Pengaturan yang paling berguna LESS_TERMCAP_*adalah urutan melarikan diri. Anda dapat memetakan atribut ke atribut yang berbeda. Anda dapat menggunakan tputperintah untuk mencari nilai kemampuan untuk terminal saat ini di sistem termcap atau terminfo basis data. Anda bisa menggunakan escape sequence secara langsung jika Anda tidak keberatan bergantung pada terminal. Misalnya, pengaturan ini memberi tahu Less untuk menampilkan dalam huruf tebal merah ketika diperintahkan untuk menampilkan dalam huruf tebal:

LESS_TERMCAP_md=$(tput md; tput AF 1)

atau jika tputperintah Anda tidak mendukung nama Termcap:

LESS_TERMCAP_md=$(tput bold; tput setaf 1)

Man mengirimkan Less text dengan beberapa format yang sangat sederhana yang hanya dapat mengekspresikan huruf tebal dan miring. Selain itu, Less menggunakan berbagai kemampuan pemformatan untuk penggunaan internal, seperti untuk menyoroti hasil pencarian dan untuk menampilkan garis mode di bagian bawah. Berikut adalah beberapa urutan pelarian yang kurang digunakan (Saya hanya mencantumkan kemampuan yang cukup berguna untuk dipetakan kembali):

termcap terminfo  
ks      smkx      make the keypad send commands
ke      rmkx      make the keypad send digits
vb      flash     emit visual bell
mb      blink     start blink
md      bold      start bold
me      sgr0      turn off bold, blink and underline
so      smso      start standout (reverse video)
se      rmso      stop standout
us      smul      start underline
ue      rmul      stop underline

Untuk menampilkan keluaran berwarna, gunakan setafkapabilitas (atau AFdengan Termcap).

The LESS_TERMCAP_*pengaturan tidak disebutkan dalam LESSdokumentasi. Referensi terbaik yang bisa saya tawarkan adalah jawaban saya di sini .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
8
Terima kasih. Saya juga melihat secara singkat kode sumber kurang dan menemukan bahwa ketika Anda mengatur LESS_TERMCAP_DEBUG ke sesuatu dan kemudian buka man Anda dapat melihat sesuatu seperti sumber halaman manual dan di dalamnya semua tag kemampuan yang digunakan. Memudahkan menentukan apa yang ingin Anda atur.
anselmus
1
Lihat jawaban ini tentang cara mengatur semua LESS_TERMCAP_*env vars menggunakan tputbukannya escape chars.
Kaushal Modi
3

Jawaban Gilles luar biasa, tetapi ini membuat saya penasaran:

Termcap sebagian besar sudah usang, digantikan oleh Terminfo

  1. Jika Termcap sudah usang, saya ingin beralih ke Terminfo

  2. Saya juga ingin beralih dari Termcap karena saya menemukan bug. Misalnya Anda meletakkan variabel termcap di ~/.profileatau yang serupa:

    export LESS_TERMCAP_so=$(printf '\33[5;30;43m')
    export LESS_TERMCAP_se=$(printf '\33[m')

    Setelah itu jika Anda masuk set, variabel Termcap mengacaukan output warna Anda.

Untuk beralih ke Terminfo, Anda dapat membuat file xterm-pretty.ti:

xterm-pretty|xterm with pretty colors,
# exit standout mode
  rmso=\e[m,
# begin standout mode
  smso=\e[5;30;43m,
# similar terminal
  use=xterm,

Kompilasi dan instal file:

tic xterm-pretty.ti

Tambahkan baris ke ~/.profileatau serupa:

TERM=xterm-pretty
Steven Penny
sumber