Terminal boyut değişikliklerinde kılavuz sayfalarını dinamik olarak yeniden biçimlendirme


14

Yaygın bir iş akışım, bir terminalde manuel bir sayfa, daha sonra şeyleri test etmek için başka bir terminal açmaktır. Kılavuz sayfası, ilk terminalin başlangıç ​​boyutlarına göre biçimlendirilir. Şimdi pencerelerimi yeniden boyutlandırdığımda (veya WM'm bunu benim için otomatik olarak yapmasını istediğimde), önceden biçimlendirilmiş sayfanın sağında bir boşluk veya satır kaydırma var. Bu noktada, genellikle sayfadaki konumumu kaybeden q(uit) ve !!(tekrar çalıştırın).

Biçimlendirme işleminin oldukça CPU yoğunluklu olduğunu veya belki de sabit terminal boyutlarının eski zamanlarından kaynaklandığını varsayıyorum. lessO teoride mümkün olmalıdır böylece çağrı cihazı dinamik terminal boyutlandırma olaylara tepki verir.

Man sayfalarını incelemeyi, Web'de arama yapmayı, IRC'ye sormayı denedim - bütünüyle - ama hiçbir şey bulamadım.

  • İnsan hizmetinin içinden veya dışından yeniden biçimlendirmeyi tetikleyebilir miyim?

  • Man yardımcı programının sayfayı dinamik olarak yeniden boyutlandıran bir sürümü var mı?

  • Güncelleme yapmak için biçimlendirme / görüntüleme işleminin bir kısmını özelleştirmenin bir yolu var mı SIGWINCH?


manaslında lessçağrı cihazı olarak kullanılır; yardım ekranını halmak için bir kılavuz sayfasına basabilirsiniz less. Neden man sayfalarını dinamik olarak yeniden boyutlandırmadığından emin değilim
Michael Mrozek

3
Sorun man, çıktıyı terimin genişliğine dönüştürecek gibi görünüyor. İhtiyacınız olan şey, belgede nerede yer imi koyabileceğiniz, adamı yeniden yürütebilecek (buna bağlı olduğu için gerçekten hiçbir fikri yok) ve yer imine geri dönebilen bir çağrı cihazıdır. Alternatif olarak, bir çağrı cihazı içeren yeni bir man komutu.
nix

Yanıtlar:


11

Temel sorun, biçimlendirmenin bir program tarafından yapılması ve disk belleği başka bir program tarafından yapılmasıdır. Biçimlendirici, pencere boyutunun değiştiğine ve yeni pencere boyutu için metni yeniden biçimlendirdiğine dair bir sinyal alsa bile, yapabileceği tek şey yeni metni boru hattına çağrı cihazına beslemektir. Çağrı cihazının, yeni akıştaki hangi konumun o anda görüntülediği eski akıştaki konuma karşılık geldiğini kesin olarak bilmesinin bir yolu yoktur.

İhtiyacınız olan şey, çağrı cihazının yeniden biçimlendirmeyi yapabilmesi için. @Robin Green'in dediği gibi, bu HTML.

HTML kullanmak istiyor ancak yine de bir terminalde çalışıyorsanız, man(1)HTML'de çıktı vermeyi söyleyebilir ve görüntülemek için bir metin modu tarayıcısını arayabilirsiniz.

man -Hlynx man

Bu man(1), lynx metin modu tarayıcısında man sayfasını görüntüleyecektir . Lynx pencere boyutu değişikliklerine doğrudan yanıt vermez, ancak ctrl-R tuşlarına basabilirsiniz ve vaşak yeni pencere boyutu için sayfayı yeniden oluşturacaktır.

Bildiğim diğer iki metin modu tarayıcısı var: bağlantılar ve elinks. Bunları ve vaşakları deneyebilir ve hangisinin size man sayfalarına göz atmak için en iyi deneyimi verdiğini belirleyebilirsiniz. Yalnızca man sayfaları için özel bir yapılandırma kullanmak ve tarayıcıyı bu belirli yapılandırmayla çağıran bir komut dosyası çalıştırmak isteyebilirsiniz.

Beğendiğiniz insan seçeneklerini MANOPTortam değişkenine koyabilirsiniz .

$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # manlynx invokes lynx with a different configuration.

HTML oluşturabilmek için groffpaketi yüklemeniz gerekecek man.


-HArgümanın insana sınırlaması, bir web sunucusu kullanmaması, sadece küçük bir dosya olmasıdır. Bu, yanlış yapılandırılmış güvenlik duvarları ile ilgili herhangi bir problemden kaçınmasına rağmen, diğer man sayfalarına köprülerin oluşturulmasına izin vermez (en azından bazı üçüncü taraf man-> html betikleri desteklenir).
Robin Green

1
@Robin Green: Soru, yeniden boyutlandırılabilir terminal pencerelerinde kılavuz sayfalarını desteklemekle ilgilidir. Bu bağlamda bir web sunucusu kullanmamak bir sınırlama değildir. Ve köprülere sahip olmamanız bir sınırlama değildir, çünkü görüntülenen man sayfalarında lessköprüler yoktur.
camh

Bu doğru, kesinlikle geçerli bir cevap.
Robin Green

4

Bir web tarayıcısında (elbette vaşak gibi metin tabanlı bir web tarayıcısı olabilir) görüntüleyen , manserver gibi uygun bir komut dosyası kullanarak man sayfalarını anında html'ye dönüştürün .

Muhtemelen hiç kimse bu sorunu çözmedi - çünkü sorun mantml komut dosyalarının geliştirilmesi ile ilgisiz hale geldi.

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.