Memformat ulang halaman manual secara dinamis pada perubahan dimensi terminal

14

Salah satu alur kerja umum saya adalah membuka halaman manual di terminal, kemudian terminal lain untuk menguji berbagai hal. Halaman manual diformat ke dimensi awal terminal pertama. Ketika sekarang saya mengubah ukuran jendela saya (atau WM saya melakukannya untuk saya secara otomatis), ada celah di sebelah kanan halaman yang telah diformat sebelumnya, atau garis yang dibungkus. Pada titik ini saya biasanya q(uit) dan !!(lari lagi), yang kehilangan posisi saya di halaman.

Saya menganggap proses pemformatan cukup intensif CPU, atau mungkin berasal dari zaman kuno ukuran terminal tetap. The lesspager dinamis bereaksi terhadap peristiwa mengubah ukuran terminal, sehingga itu harus mungkin dalam teori.

Saya mencoba membaca halaman manual, mencari di Web, bertanya di IRC - semuanya - tetapi tidak bisa menemukan apa pun.

  • Bisakah saya memicu pemformatan ulang dari dalam atau di luar utilitas man?

  • Apakah ada versi man utility yang mengubah ukuran halaman secara dinamis?

  • Apakah ada cara untuk menyesuaikan beberapa bagian dari proses pemformatan / tampilan agar pembaruan SIGWINCH?

peth
sumber
mansebenarnya digunakan lesssebagai pager; Anda dapat menekan hhalaman manual untuk mendapatkan lesslayar bantuan. Saya tidak yakin mengapa itu tidak mengubah ukuran halaman manual secara dinamis
Michael Mrozek
3
Masalahnya tampaknya yang manmembuat output dengan lebar istilah. Yang Anda butuhkan adalah pager yang dapat menandai di mana Anda berada di dalam dokumen, mengeksekusi ulang man (yang benar-benar tidak tahu sejak itu disalurkan ke sana) dan kembali ke bookmark. Atau, perintah manusia baru yang menggabungkan pager.
nix

Jawaban:

11

Masalah dasar adalah bahwa pemformatan dilakukan oleh satu program dan paging dilakukan oleh yang lain. Bahkan jika penata format mendapatkan sinyal bahwa ukuran jendela telah berubah dan memformat ulang teks untuk ukuran jendela baru, yang bisa dilakukan hanyalah memasukkan teks baru ke dalam pipa ke pager. Tidak ada cara bagi pager untuk mengetahui dengan pasti posisi apa di aliran baru yang sesuai dengan posisi di aliran lama yang sedang ditampilkan.

Yang Anda butuhkan adalah agar pager dapat melakukan pemformatan ulang. Seperti yang dikatakan @Robin Green, itu HTML.

Jika Anda ingin menggunakan HTML tetapi masih berfungsi di terminal, Anda dapat meminta man(1)untuk meng-output dalam HTML dan memanggil browser mode teks untuk menampilkannya.

man -Hlynx man

Itu akan menampilkan halaman man(1)manual di browser mode teks lynx. Lynx tidak secara langsung menanggapi perubahan ukuran jendela, tetapi Anda dapat menekan ctrl-R dan lynx akan merender ulang halaman untuk ukuran jendela baru.

Ada dua browser mode teks lain yang saya ketahui: tautan dan elink. Anda dapat bereksperimen dengan itu dan lynx dan menentukan mana yang memberi Anda pengalaman terbaik untuk menjelajahi halaman manual. Anda mungkin ingin menggunakan konfigurasi khusus hanya untuk halaman manual dan menjalankan skrip yang memanggil browser dengan konfigurasi tertentu.

Anda bisa memasukkan opsi man yang Anda suka ke MANOPTvariabel lingkungan.

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

Anda perlu menginstal groffpaket untuk mandapat menghasilkan HTML.

camh
sumber
Batasan -Hargumen pada man adalah bahwa ia tidak menggunakan server web, tetapi hanya sebuah file kecil. Meskipun ini menghindari masalah dengan firewall yang salah konfigurasi, firewall tidak memperbolehkan hyperlink ke halaman manual lainnya (yang setidaknya mendukung skrip man> html pihak ketiga).
Robin Green
1
@Robin Green: Pertanyaannya adalah tentang mendukung halaman manual di jendela terminal yang cukup besar. Dalam konteks itu tidak menggunakan server web bukan batasan. Dan tidak memiliki hyperlink bukanlah batasan, karena halaman manual yang ditampilkan lesstidak memiliki hyperlink.
camh
Itu benar, itu tentu jawaban yang valid.
Robin Green
4

Konversikan halaman manual menjadi html dengan cepat menggunakan skrip yang sesuai seperti manserver , melihatnya di browser web (yang tentu saja dapat menjadi browser web berbasis teks seperti lynx).

Ini mungkin mengapa tidak ada yang memecahkan masalah ini - karena masalah menjadi tidak relevan dengan pengembangan skrip man-> html.

Robin Green
sumber