LESS_TERMCAP_ * değişkenleriyle ilgili belgeler?


Yanıtlar:


45

Termcap daha az terminale erişmek için kullandığı bir kütüphanedir. Termcap büyük ölçüde eskidir, yerine Terminfo kullanmıştır , ancak Terminfo uygulamalara bir Termcap uyumluluk arayüzü sunar. Daha az Termcap arayüzü ile içerik ve bunu kullanır.

Termcap kütüphanesi, terminalin olanaklarının bir tanımıdır. Her tesis iki harfli (veya daha genel olarak iki karakterli) bir kodla tanımlanır. Örneğin, hcbasılı kopya terminallerini (yani ekranları değil yazıcıları) tanımlar; cosütun sayısıdır; mdkalın yazı görüntülemeye başlar. Her yetenek, bir boolean (olduğu gibi hc), bir tamsayı (olduğu gibi co) veya bir dize (olduğu gibi md) olabilir. Dizelerin çoğu, uygulamaların belirli bir etki elde etmek için terminale gönderebilecekleri kaçış dizileridir.

Neden kaçış dizileri? Terminal ile uygulama arasındaki arayüz karakter akışı olduğundan (daha doğrusu her yöndeki bir karakter akışı: biri kullanıcı girişi, biri çıktı görüntülemek için). Bir uygulama terminale bir karakter yazdığında, genellikle görüntülenir. Birkaç karakterin farklı davranışları vardır: bunlar imleci hareket ettirmek, ekran niteliklerini değiştirmek gibi şeyleri yapan kontrol karakterleridir. Kontrol karakterlerinden çok daha fazla komut vardır, bu nedenle çoğu komutla başlayan kaçış dizilerine erişilir. özel bir karakter (genellikle kaçış karakteri, dolayısıyla adı).

Örneğin, Less biraz kalın metin görüntülemek istediğinde, bu mdkabiliyetin değerini arar . Bu, daha az terminale yazan bir dizedir. Terminal, bu dizgeyi bir kaçış dizisi olarak tanır ve sonraki karakterlerin kalın harflerle gösterilmesi için iç durumunu ayarlar.

Donanım terminallerinin ilk günlerinde, farklı markaların farklı kaçış dizileri ve yetenekleri vardı; Termcap veritabanı ve arayüzü icat edildi, böylece uygulamalar her terminal modeli hakkında bilmek zorunda kalmayacaktı. Günümüzde çoğu terminal emülatörleri çok benzer özelliklere sahiptir, ancak Termcap veya Terminfo veritabanı küçük farklarla baş etmek için hala yararlıdır.

LESS_TERMCAP_*Değişkenler ortamında veya ayarlanabilir .lesskeydosyası . Terminal yetenekleri için alternatif değerlerle daha az sağlar. Daha az bir terminal özelliği kullanmak istediğinde, kalın harfle değiştir seçeneğinin, LESS_TERMCAP_mddeğişken olup olmadığını kontrol eder . Bu değişken varsa, daha az değerini, kalınlaşmaya geçmek için kaçış dizisi olarak kullanır. Değilse, Termcap veritabanındaki değeri kullanır. Bu mekanizma, kullanıcının Termcap veritabanı ayarlarını Daha Az için geçersiz kılmasına izin verir.

En kullanışlı LESS_TERMCAP_*ayarlar kaçış dizileridir. Özellikleri farklı özelliklerle eşleyebilirsiniz. tputKomutu, sistemin Termcap veya Terminfo veritabanındaki mevcut terminal için bir kabiliyetin değerini aramak için kullanabilirsiniz . Terminale bağımlı olup olmadığınızı düşünüyorsanız doğrudan kaçış dizilerini kullanabilirsiniz. Örneğin, bu ayar, Kalın olarak gösterilmesi istendiğinde Koyu kırmızı renkte görüntülenmesini söyler:

LESS_TERMCAP_md=$(tput md; tput AF 1)

veya tputkomutunuz Termcap adlarını desteklemiyorsa:

LESS_TERMCAP_md=$(tput bold; tput setaf 1)

Adam sadece kalın ve italik ifade edebilen basit formatlarla daha az metin gönderir. Ek olarak, Daha Az, arama sonuçlarını vurgulamak ve mod çizgisini en altta görüntülemek gibi dahili kullanım için çeşitli biçimlendirme yetenekleri kullanır. İşte Less'in kullandığı kaçış dizilerinden bazıları: (Sadece yeniden eşleştirmenin makul derecede yararlı olabileceği yetenekleri sıralarım):

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

Çıktıyı renkli göstermek için bu setafözelliği kullanın (veya AFTermcap ile).

LESS_TERMCAP_*Ayarlar belirtilmeyen LESSbelgelere. Sunabileceğim en iyi referans burada cevabım .


8
Teşekkürler. Ayrıca daha az kaynak koduna da kısaca baktım ve LESS_TERMCAP_DEBUG öğesini bir şeye ayarladığınızda ve ardından insanı açtığınızda man sayfalarının kaynağı gibi bir şey görebildiğinizi ve kullanılan tüm yetenek etiketlerini görebildiğimi öğrendim. Neye ayarlamak istediğine karar vermeyi kolaylaştırır.
Ocak'ta

1
Kaçış karakterleri yerine tüm env değişkenlerini nasıl ayarlayacağınıza dair bu cevaba bakın . LESS_TERMCAP_*tput
Kaushal Modi

3

Gilles cevap mükemmel, ama bu beni meraklandırdı:

Termcap büyük ölçüde eskidir, yerine Terminfo girmiştir.

  1. Termcap eskiyse, Terminfo'ya geçmek istiyorum

  2. Ayrıca bir hata bulduğum için Termcap'ten ayrılmak istiyorum. Bir termcap değişkeni içine ~/.profileveya benzerine koyduğunuzu söyleyin :

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

    Bundan sonra girerseniz set, Termcap değişkenleri renkli çıktınızı karıştırır.

Terminfo'ya geçmek için bir dosya yapabilirsiniz 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,

Dosyayı derleyin ve kurun:

tic xterm-pretty.ti

Şuna ~/.profileveya benzer bir satır ekle :

TERM=xterm-pretty
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.