ฉันจะยังเห็นข้อความ 'man' หลังจากที่ฉันเลิกไปได้อย่างไร


16

ฉันมักจะใช้ tcsh หรือ bash และมักต้องการใช้ 'man' เพื่อตรวจสอบตัวเลือกของคำสั่ง ขณะนี้เมื่อฉันออกจาก man หรือ ctrl-C ข้อความ man จะหายไปและฉันเห็น scrollback buffer ที่อยู่ที่นั่นก่อนที่ฉันจะใช้คำสั่ง 'man' ฉันยังต้องการเห็นข้อความ 'man' ที่ฉันดูเป็นข้อมูลอ้างอิงในขณะที่ฉันพิมพ์คำสั่งที่ command prompt โดยไม่ต้องเปิดหน้าต่างที่สองฉันจะทำอย่างไร

คำตอบ:


17

พฤติกรรมนี้มาจากคุณสมบัติ "หน้าจอทางเลือก" ที่รวมอยู่ในเทอร์มินัล (ฮาร์ดแวร์) และเทอร์มินัลอีมูเลเตอร์ส่วนใหญ่ (ซอฟต์แวร์) สิ่งที่เกิดขึ้นคือบางโปรแกรมที่ทราบว่าเทอร์มินัลสลับไปที่ 'หน้าจอ' เพื่อทำงานและสลับกลับไปที่หน้าจอปกติเมื่อพวกเขาถูกไล่ออก (เลิก, หยุดทำงาน, ฯลฯ ) ซึ่งจะเป็นการลบล้างผลลัพธ์สุดท้ายของโปรแกรมดังกล่าวอย่างมีประสิทธิภาพ

การค้นหาเว็บสำหรับ“ terminfo ป้องกัน altscreen” จัดทำหน้าเว็บที่กล่าวถึง 'ปัญหา' ของหน้าจออื่นและการแก้ปัญหาหลายอย่าง

เมื่ออธิบายถึงหน้าที่เชื่อมโยงแล้วบางโปรแกรมสามารถกำหนดค่าให้หลีกเลี่ยงการใช้หน้าจอทางเลือกได้ -Xตัวเลือกสำหรับการน้อยเป็นวิธีทางอ้อมของการทำเช่นนี้ เป็นกลุ่มสามารถกำหนดค่าในทำนองเดียวกันโดยการยกเลิกการตั้งค่าt_tiและt_teตัวแปร


โซลูชันที่มีขอบเขตที่กว้างขึ้นคือการแก้ไขรายการterminfoสำหรับเทอร์มินัลของคุณเพื่อที่จะไม่รวมลำดับการควบคุมหน้าจออื่น รายการ terminfo สร้างฐานข้อมูลที่บอกโปรแกรมว่าลำดับการควบคุมใดที่จะส่งไปยังเทอร์มินัลเพื่อสร้างเอฟเฟกต์บางอย่าง (การย้ายเคอร์เซอร์การล้างหน้าจอการลบส่วนหนึ่งของบรรทัดปัจจุบัน ฯลฯ ) ด้วยการแก้ไขรายการ terminfo ที่เทอร์มินัลของคุณใช้คุณสามารถจัดการ 'ละเลยที่จะบอก' โปรแกรมที่ใช้ terminfo ทั้งหมดที่มีลำดับการควบคุม“ หน้าจอสำรอง” อยู่

จากรายการลำดับการควบคุมสำหรับxtermเราจะเห็นได้ว่าลำดับการควบคุมที่สนใจ (สำหรับเทอร์มินัลอีมูเลเตอร์xterm )

  • เปิดใช้งานหน้าจอทางเลือก: ESC [ ? 47 h(เช่นเดียวกันกับ 1047 และ 1049) และ
  • กู้คืนหน้าจอปกติ: ESC [ ? 47 l(เช่นเดียวกันกับ 1047 และ 1,049)

รหัสเหล่านี้มีแนวโน้มมากที่สุดที่มีอยู่ในตัวแปรที่ terminfo และsmcup rmcupวิธีที่รวดเร็วและสกปรกในการปรับตัวแปรเหล่านี้สำหรับ TERM ปัจจุบันของคุณอาจมีลักษณะเช่นนี้:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

วิธีนี้ค่อนข้างหยาบและจะไม่สามารถใช้ได้กับเทอร์มินัลทั้งหมด แต่ก็อาจใช้ได้กับเทอร์มินัลอีมูเลเตอร์xterm ที่เหมือนกันเกือบทั้งหมด เป็นการดีที่คุณควรตรวจสอบค่าในsmcupและrmcupตัวแปรของรายการ terminfo สำหรับเทอร์มินัลของคุณและแก้ไขอย่างระมัดระวังเพื่อป้องกันพฤติกรรมที่ไม่พึงประสงค์ หน้าอภิปราย / โซลูชันที่เชื่อมโยงข้างต้นมีไฟล์ terminfo“ เตรียมไว้ล่วงหน้า” ที่คุณอาจใช้แทนการแฮ็คของคุณเอง (แต่ความสนุกในนั้นคืออะไร)


10

คุณต้องตั้งค่า$MANPAGERให้/usr/bin/less -isXเปลี่ยนเส้นทางที่lessพบตามต้องการ ส่วนที่สำคัญคือ-X; -isเป็นชุดเริ่มต้นส่งผ่านไปยังน้อย


9

สมมติว่าเพจเจอร์ของคุณคือlessตั้งค่าตัวแปรสภาพแวดล้อมLESSเพื่อรวม "X" ตัวอย่างของฉันคือ:

LESS="-iMFXRj4a"

คุณสามารถตั้งค่านี้ใน~/.bashrcไฟล์ของคุณ

export LESS="-X"

และรวมถึงตัวเลือกอื่น ๆ ที่คุณ alrady มีหรือเพิ่มตัวเลือกที่คุณชอบ


4

เคล็ดลับอื่น - หรูหราน้อยกว่าคำตอบอื่น ๆ คือ:

man what | more

(อย่างน้อยสามารถใช้งานได้กับ MacOS X ซึ่งมักจะคล้ายกันมากพอที่จะใช้งานได้)


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