Bu sevimli renkleri , bu değişkenlerin bir demetini ayarlarken daha az görüntülenen man sayfalarında görüyorum . Ne anlama geliyor, belgeler nerede? Bu daha az mı yoksa termcap tarafından mı yorumlanıyor?
Bu sevimli renkleri , bu değişkenlerin bir demetini ayarlarken daha az görüntülenen man sayfalarında görüyorum . Ne anlama geliyor, belgeler nerede? Bu daha az mı yoksa termcap tarafından mı yorumlanıyor?
Yanıtlar:
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, hc
basılı kopya terminallerini (yani ekranları değil yazıcıları) tanımlar; co
sütun sayısıdır; md
kalı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 md
kabiliyetin 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 .lesskey
dosyası . 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_md
değ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. tput
Komutu, 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 tput
komutunuz 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 AF
Termcap ile).
LESS_TERMCAP_*
Ayarlar belirtilmeyen LESS
belgelere. Sunabileceğim en iyi referans burada cevabım .
LESS_TERMCAP_*
tput
Gilles cevap mükemmel, ama bu beni meraklandırdı:
Termcap büyük ölçüde eskidir, yerine Terminfo girmiştir.
Termcap eskiyse, Terminfo'ya geçmek istiyorum
Ayrıca bir hata bulduğum için Termcap'ten ayrılmak istiyorum. Bir termcap değişkeni içine ~/.profile
veya 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 ~/.profile
veya benzer bir satır ekle :
TERM=xterm-pretty