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 -X
lự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_ti
và t_te
biế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 smcup
và rmcup
. 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 smcup
và rmcup
cá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 đó?).