Tính năng này dường như được gọi là 'màn hình thay thế' hoặc chuyển đổi giữa màn hình bình thường và màn hình thay thế.
Bạn có thể khám phá nó bằng cách sử dụng xterm. Ví dụ gõ man man
một xterm
người đàn ông và thoát. Bây giờ bạn có thể chuyển sang màn hình thay thế thông qua Ctrl+ Mouse2 (nhấp chuột giữa) -> 'Hiển thị màn hình thay thế'. Ngoài ra, bạn có thể nhập trực tiếp các chuỗi điều khiển xterm , ví dụ:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
Hai lệnh cuối cùng cũng hoạt động trong gnome-terminal (có thể trong các lệnh khác nữa).
Điều gì xảy ra khi man
/ vi
/ less
vv khởi động về cơ bản là chúng gửi một lệnh màn hình rõ ràng trừu tượng. Khi thoát (hoặc tạm dừng), họ gửi một lệnh màn hình khôi phục trừu tượng. Làm thế nào lệnh dịch sang trình tự điều khiển thiết bị đầu cuối cụ thể được xác định trong cơ sở dữ liệu terminfo .
Vô hiệu hóa chuyển đổi màn hình thay thế
Điều nên làm cho tất cả các thiết bị đầu cuối là điều chỉnh các mục terminfo cục bộ, tức là loại bỏ ánh xạ của các lệnh màn hình xóa / khôi phục trừu tượng.
Bạn có thể làm như thế này - cho $TERM
mục hiện tại (ví dụ như cho gnome-terminal trên Fedora 19):
$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/\1-na|/ ; /smcup\|rmcup/d ' \
xterm-256color > xterm-256color-na
$ diff -u xterm-256color*
--- xterm-256color 2013-08-04 16:33:52.041393461 +0200
+++ xterm-256color-na 2013-08-04 16:36:56.829930520 +0200
@@ -1,5 +1,5 @@
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
-xterm-256color|xterm with 256 colors,
+xterm-256color-na|xterm with 256 colors,
am,
bce,
ccc,
@@ -155,7 +155,6 @@
rin=\E[%p1%dT,
rmacs=\E(B,
rmam=\E[?7l,
- rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
rmm=\E[?1034l,
@@ -170,7 +169,6 @@
sgr0=\E(B\E[m,
smacs=\E(0,
smam=\E[?7h,
- smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
smm=\E[?1034h,
$ tic xterm-256color-na # loads the file to $HOME/.terminfo
$ find ~/.terminfo -type f
$ HOME/.terminfo/x/xterm-256color-na
Bây giờ bạn có thể kiểm tra nó qua:
$ TERM=xterm-256color-na man man # and then hit q
Bạn có thể lặp lại các bước trên cho các thiết bị đầu cuối khác nếu bạn sử dụng nhiều thiết bị đầu cuối. Nếu mọi thứ hoạt động như mong đợi, bạn có thể thiết lập TERM
thông qua tệp RC shell của mình.
Bạn cũng có thể trực tiếp chỉ định tên thiết bị đầu cuối làm tham số infocmp
, ví dụ:
$ infocmp -1 screen > screen
Cho phép chuyển đổi màn hình thay thế
Một số thiết bị đầu cuối hỗ trợ tính năng chuyển đổi màn hình thay thế (ví dụ: màn hình ), nhưng tắt nó theo mặc định .
Đối với screen
bạn có thể kích hoạt nó thông qua ~/.screenrc
:
$ cat ~/.screenrc
altscreen
Nếu bạn đăng nhập từ xa qua ssh to - giả sử - một hệ thống Solaris có lẽ cơ sở dữ liệu terminfo toàn hệ thống được cấu hình từ xa là loại lịch sử, bị hỏng hoặc bao gồm một số mặc định khác thường / Solaris không khớp với các thiết bị đầu cuối 'chảy máu cạnh' bạn chạy ssh vào.
Vì vậy, nó là một tùy chọn để chỉ sao chép cơ sở dữ liệu terminfo cục bộ từ / usr / share / thông tin (trên máy khách) sang host:~/.terminfo
(trên máy chủ).
Trong trường hợp định dạng terminfo được biên dịch không tương thích, bạn cũng có thể xuất / nhập các mục như trong đoạn trước.
Tôi đã thử với một terminfo-db từ bản cài đặt Cygwin và sao chép nó trực tiếp vào hệ thống Solaris 10 hoạt động.
Trong trường hợp bạn muốn chia sẻ một db terminfo thay thế giữa những người dùng, bạn chỉ định đường dẫn của nó thông qua TERMINFO
biến môi trường.
Bỏ qua chuỗi điều khiển
Một số thiết bị đầu cuối hỗ trợ vô hiệu hóa chuỗi điều khiển để chuyển đổi màn hình thay thế. Ví dụ xterm có một tùy chọn, gnome-terminal thì không.
Đối với xterm, đó là X-ressource , vd
XTerm*titeInhibit: true
Cấu hình chương trình cụ thể
Một số chương trình có tệp cấu hình để định cấu hình các lệnh trình tự / terminfo điều khiển mà chúng gửi. Ví dụ
$ LESS=X less foo
cấu hình less
để không xóa / khôi phục màn hình.
Đối với vim
bạn có thể bao gồm một cái gì đó như
set t_ti= t_te=
trong bạn ~/.vimrc
.
Tôi chưa tìm thấy tùy chọn cách định cấu hình hành vi đó cho đầu trang - theo mặc định, nó không gửi màn hình khôi phục.