ทำการฟอร์แมตหน้า man บนไดนามิกเปลี่ยนขนาดเทอร์มินัล


14

เวิร์กโฟลว์ทั่วไปหนึ่งของฉันคือการเปิดหน้าคู่มือในเทอร์มินัลจากนั้นเทอร์มินัลอื่นที่จะทดสอบสิ่งต่าง ๆ man page ถูกจัดรูปแบบเป็นขนาดเริ่มต้นของเทอร์มินัลแรก เมื่อฉันปรับขนาดหน้าต่างของฉัน (หรือให้ WM ทำสิ่งนั้นกับฉันโดยอัตโนมัติ) จะมีช่องว่างทางด้านขวาของหน้าที่จัดรูปแบบไว้ล่วงหน้าหรือมีการตัดบรรทัด ณ จุดนี้ฉันมักจะq(uit) และ!!(ทำงานอีกครั้ง) ซึ่งสูญเสียตำแหน่งของฉันในหน้า

ฉันคิดว่ากระบวนการจัดรูปแบบค่อนข้างใช้ CPU ค่อนข้างมากหรืออาจเกิดจากสมัยโบราณขนาดเทอร์มินัลคงที่ lessเพจเจอร์แบบไดนามิกตอบสนองต่อเหตุการณ์การปรับขนาดขั้วดังนั้นจึงควรจะเป็นไปได้ในทางทฤษฎี

ฉันลองอ่านหน้าคนอื่น ๆ ค้นหาเว็บถาม IRC - ล็อตทั้งหมด - แต่ก็ไม่สามารถทำอะไรได้เลย

  • ฉันสามารถเรียกการฟอร์แมตใหม่จากภายในหรือภายนอกยูทิลิตี้ของมนุษย์ได้หรือไม่?

  • มียูทิลิตี้รุ่นที่ปรับขนาดหน้าเว็บแบบไดนามิกหรือไม่?

  • มีวิธีในการปรับแต่งบางส่วนของกระบวนการจัดรูปแบบ / แสดงผลเพื่อให้มันปรับปรุงบนSIGWINCH?


manใช้lessเป็นเพจเจอร์จริง ๆ แล้ว คุณสามารถกดhหน้า man เพื่อรับlessหน้าจอความช่วยเหลือ ฉันไม่แน่ใจว่าทำไมมันไม่ปรับขนาดหน้าคนแบบไดนามิก
Michael Mrozek

3
ปัญหาดูเหมือนจะเป็นที่manทำให้การส่งออกไปยังความกว้างของคำ สิ่งที่คุณต้องการคือเพจเจอร์ที่สามารถคั่นตำแหน่งที่คุณอยู่ในเอกสาร, เรียกใช้งาน man อีกครั้ง (ซึ่งจริงๆแล้วมันไม่มีความคิดเกี่ยวกับมันตั้งแต่ piped ไปที่มัน) และกลับไปที่ bookmark หรือมิฉะนั้นคำสั่ง man ใหม่ที่รวมเพจเจอร์
ห้าม

คำตอบ:


11

ปัญหาพื้นฐานคือการจัดรูปแบบจะกระทำโดยโปรแกรมหนึ่งและเพจจะทำโดยโปรแกรมอื่น แม้ว่าตัวจัดรูปแบบจะได้รับสัญญาณว่าขนาดหน้าต่างมีการเปลี่ยนแปลงและจัดรูปแบบข้อความสำหรับขนาดหน้าต่างใหม่สิ่งที่สามารถทำได้คือป้อนข้อความใหม่ลงไปยังไปยังเพจเจอร์ ไม่มีวิธีที่เพจเจอร์จะทราบได้อย่างแน่นอนว่าตำแหน่งใดในสตรีมใหม่ที่สอดคล้องกับตำแหน่งในสตรีมเก่าที่กำลังแสดงอยู่

สิ่งที่คุณต้องการสำหรับเพจเจอร์ที่จะสามารถทำการฟอร์แมตใหม่ได้ @Robin Green กล่าวว่านั่นคือ HTML

หากคุณต้องการใช้ HTML แต่ยังคงทำงานในเทอร์มินัลคุณสามารถบอกman(1)ให้ส่งออกใน HTML และเรียกเบราว์เซอร์โหมดข้อความเพื่อแสดง

man -Hlynx man

ที่จะแสดงman(1)manpage ในเบราว์เซอร์โหมดข้อความคม Lynx ไม่ตอบสนองต่อการเปลี่ยนแปลงขนาดหน้าต่างโดยตรง แต่คุณสามารถกด ctrl-R และ lynx จะแสดงหน้าเว็บอีกครั้งสำหรับขนาดหน้าต่างใหม่

มีอีกสองโหมดข้อความเบราว์เซอร์ที่ฉันรู้คือ: ลิงค์และ elinks คุณสามารถทดลองกับเหล่านั้นและคมและตรวจสอบที่ให้ประสบการณ์ที่ดีที่สุดสำหรับการเรียกดูหน้าคน คุณอาจต้องการใช้การกำหนดค่าแบบกำหนดเองสำหรับหน้าคนและเรียกใช้สคริปต์ที่เรียกใช้เบราว์เซอร์ด้วยการกำหนดค่าเฉพาะนั้น

คุณสามารถใส่ตัวเลือกแมนที่คุณชอบลงในMANOPTตัวแปรสภาพแวดล้อม

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

คุณจะต้องติดตั้งgroffแพคเกจเพื่อmanให้สามารถสร้าง HTML ได้


ข้อ จำกัด ของการ-Hโต้เถียงกับมนุษย์คือมันไม่ได้ใช้เว็บเซิร์ฟเวอร์ แต่เป็นเพียงไฟล์เล็ก ๆ แม้ว่าสิ่งนี้จะช่วยหลีกเลี่ยงปัญหาใด ๆ กับไฟร์วอลล์ที่กำหนดค่าผิดพลาด แต่ก็ไม่อนุญาตให้มีการสร้างไฮเปอร์ลิงก์ไปยังหน้าอื่น ๆ
Robin Green

1
@ Robin Green: คำถามเกี่ยวกับการสนับสนุน man pages ในหน้าต่างเทอร์มินัลที่ปรับขนาดได้อีกครั้ง ในบริบทนั้นไม่ได้ใช้เว็บเซิร์ฟเวอร์ไม่ใช่ข้อ จำกัด และไม่มีการเชื่อมโยงหลายมิติไม่ได้เป็นข้อ จำกัด เนื่องจากหน้าคนที่แสดงในlessไม่มีการเชื่อมโยงหลายมิติ
camh

มันเป็นคำตอบที่ถูกต้องอย่างแน่นอน
Robin Green

4

แปลง man page เป็น html ได้ทันทีโดยใช้สคริปต์ที่เหมาะสมเช่นmanserverดูในเว็บเบราว์เซอร์ (ซึ่งแน่นอนว่าอาจเป็นเว็บเบราว์เซอร์แบบข้อความเช่น lynx)

นี่น่าจะเป็นเหตุผลที่ไม่มีใครแก้ปัญหานี้ได้ - เพราะปัญหาไม่เกี่ยวข้องกับการพัฒนาสคริปต์ man -> html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.