Làm thế nào tôi vẫn có thể thấy văn bản 'người đàn ông' sau khi tôi bỏ đàn ông?


16

Tôi thường sử dụng tcsh hoặc bash và thường muốn sử dụng 'man' để xem lại các tùy chọn của lệnh. Hiện tại khi tôi thoát man hoặc ctrl-C, văn bản man biến mất và tôi thấy bộ đệm cuộn ở đó trước khi tôi thực hiện lệnh 'man'. Tôi vẫn muốn xem văn bản 'người đàn ông' mà tôi đang xem làm tài liệu tham khảo trong khi tôi đang gõ lệnh tại dấu nhắc lệnh mà không mở cửa sổ thứ hai, làm thế nào tôi có thể làm điều đó?

Câu trả lời:


17

Hành vi này xuất phát từ tính năng màn hình thay thế của Wap có trong một số thiết bị đầu cuối (phần cứng) và hầu hết các trình giả lập thiết bị đầu cuối (phần mềm). Điều gì xảy ra là một số chương trình nhận biết thiết bị đầu cuối chuyển sang 'màn hình' thay thế để thực hiện công việc của chúng và chuyển trở lại 'màn hình' bình thường khi chúng bị loại bỏ (bỏ, tạm dừng, v.v.). Điều này có hiệu quả xóa đi đầu ra cuối cùng của các chương trình như vậy.

Một tìm kiếm trên web cho term terminfo ngăn chặn màn hình altscreen cung cấp một trang thảo luận về "vấn đề" màn hình thay thế và một số giải pháp .

Như trang được liên kết mô tả, một số chương trình có thể được cấu hình để tránh sử dụng màn hình thay thế. Các -Xlựa chọn cho ít là một cách gián tiếp để làm điều này. Vim có thể được cấu hình tương tự bằng cách bỏ đặt các biến t_tit_tebiến.


Một giải pháp với phạm vi rộng hơn là chỉnh sửa mục terminfo cho thiết bị đầu cuối của bạn để nó không bao gồm các chuỗi điều khiển màn hình thay thế. Các mục terminfo tạo thành một cơ sở dữ liệu cho biết các chương trình kiểm soát các chuỗi sẽ gửi đến một thiết bị đầu cuối để tạo các hiệu ứng nhất định (di chuyển con trỏ, xóa màn hình, xóa một phần của dòng hiện tại, v.v.). Bằng cách chỉnh sửa mục nhập terminfo mà thiết bị đầu cuối của bạn sử dụng, bạn có thể sắp xếp để 'bỏ qua việc nói' tất cả các chương trình sử dụng thuật ngữ mà các trình tự điều khiển màn hình thay thế trên mạng còn tồn tại.

Từ danh sách các chuỗi điều khiển cho xterm , chúng ta có thể thấy rằng các chuỗi điều khiển quan tâm (đối với các trình giả lập thiết bị đầu cuối giống như xterm ) là

  • bật màn hình thay thế: ESC [ ? 47 h(tương tự cho 1047 và 1049) và
  • khôi phục màn hình bình thường: ESC [ ? 47 l(tương tự cho 1047 và 1049).

Các mã này rất có thể có mặt trong các biến terminfo smcuprmcup. Một cách nhanh chóng và bẩn thỉu để loại bỏ các biến này cho HẠN hiện tại của bạn có thể trông như thế này:

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

Phương pháp này khá thô và chắc chắn sẽ không hoạt động cho tất cả các thiết bị đầu cuối, nhưng nó có thể sẽ hoạt động cho hầu hết các trình giả lập thiết bị đầu cuối giống như xterm . Tốt nhất bạn nên điều tra các giá trị trong smcuprmcupcác biến của mục terminfo cho thiết bị đầu cuối của bạn và chỉnh sửa chúng một cách thận trọng để ngăn chặn hành vi không mong muốn. Trang thảo luận / giải pháp được liên kết ở trên có tệp terminfo được nấu sẵn mà bạn có thể sử dụng thay vì tự hack (nhưng điều gì thú vị trong đó?).


10

Bạn cần đặt $MANPAGERthành /usr/bin/less -isX, thay thế đường dẫn lessđược tìm thấy theo yêu cầu. Phần quan trọng là -X; bộ -ismặc định được truyền cho ít hơn.


9

Giả sử máy nhắn tin của bạn là less, đặt biến môi trường LESSđể bao gồm "X". Ví dụ của tôi là:

LESS="-iMFXRj4a"

Bạn có thể thiết lập điều này trong ~/.bashrctập tin của bạn

export LESS="-X"

và bao gồm bất kỳ tùy chọn nào khác mà bạn có hoặc thêm những tùy chọn bạn thích.


4

Một mẹo khác - kém thanh lịch hơn các câu trả lời khác - là:

man what | more

(Ít nhất, điều này hoạt động trên MacOS X, thường tương tự đủ để nó hợp lệ.)


1

đàn ông cái gì | hơn

Điều này hoạt động tốt (Fedora).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.