터미널에서 화면 복구를 구성하는 방법은 무엇입니까?

터미널에서 화면 복구를 구성하는 방법은 무엇입니까?

다음 순서는 터미널/환경에 따라 다른 효과를 갖습니다.

$ ls
1
2
$ man ls
enter q

현재 프롬프트 위에 마지막으로 표시된 매뉴얼 페이지 화면을 표시하거나 ls 출력 및 이전 쉘 출력을 복원합니다. 예를 들어, 셸에서 특정 작업을 수행하기 위해 사용했다가 일시 중지하면 vim동일한 효과가 관찰됩니다 .

Fedora 19에서 - screen의 기본값은 no-restore인 것으로 보이며 gnome-terminal/xterm은 기본적으로 do-restore를 사용합니다.

Solaris에서는 사용되는 터미널/terminfo db에 따라 달라지는 것 같습니다.

다양한 시스템/터미널에서 복구 동작을 일관되게 구성하고 싶습니다.

답변1

이 기능은 "대체 화면" 또는 일반 화면과 대체 화면 사이를 전환하는 것으로 보입니다.

xterm을 사용하여 탐색할 수 있습니다. 예를 들어, man manan을 입력 xterm하고 man을 종료합니다. 이제 Ctrl+Mouse2(마우스 가운데 버튼 클릭) -> "대체 화면 표시"를 통해 대체 화면으로 전환할 수 있습니다. 아니면 직접 입력해도 됩니다xterm 제어 시퀀스,예를 들어:

$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen

마지막 두 명령은 gnome-terminal(및 다른 터미널에서도 사용할 수 있음)에서도 사용할 수 있습니다.

man// vi시작 시 일어나는 일은 less기본적으로 추상적인 화면 지우기 명령을 보내는 것입니다. 종료(또는 일시 중단) 시 추상 재개 화면 명령을 보냅니다. 명령이 특정 터미널 제어 시퀀스로 변환되는 방법은 다음과 같습니다.용어 정보데이터 베이스.

대체 화면 전환 비활성화

모든 터미널에서 작동하는 것은 로컬 terminfo 항목을 조정하는 것입니다. 즉, 추상 지우기/복원 화면 명령에 대한 매핑을 제거합니다.

현재 $TERM항목(예: Fedora 19의 gnome-terminal)에 대해 다음을 수행할 수 있습니다.

$ 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

이제 다음을 통해 테스트할 수 있습니다.

$ TERM=xterm-256color-na man man # and then hit q

여러 터미널을 사용하는 경우 다른 터미널에 대해 위 단계를 반복할 수 있습니다. 모든 것이 예상대로 작동하면 TERM쉘 rc 파일을 통해 설정할 수 있습니다.

터미널 이름을 인수로 직접 지정할 수도 있습니다 infocmp. 예를 들면 다음과 같습니다.

$ infocmp -1 screen > screen

대체 화면 전환 활성화

일부 단말기에서는 대체 화면 전환 기능을 지원합니다(예:화면), 하지만기본적으로 비활성화되어 있습니다..

screen다음을 통해 활성화 할 수 있습니다 ~/.screenrc.

$ cat ~/.screenrc
altscreen

SSH를 통해 Solaris 시스템에 원격으로 로그인하는 경우 원격 구성의 시스템 전체 terminfo 데이터베이스는 약간의 기록이 있거나 손상되었거나 "프론티어"와 일치하지 않는 특이한/Solaris 관련 기본값을 포함할 수 있습니다. " SSH를 실행 중인 터미널입니다.

따라서 로컬 terminfo 데이터베이스를 /usr/share/info(클라이언트)에서 (서버)로 복사하도록 선택할 수 있습니다 host:~/.terminfo.

컴파일된 terminfo 형식이 호환되지 않는 경우 이전 단락에서와 같이 항목을 내보내거나 가져올 수도 있습니다.

나는 terminfo-db를 사용해 보았습니다.시빈Solaris 10 시스템에 직접 설치하고 복사하기만 하면 됩니다.

사용자 간에 대체 terminfo 데이터베이스를 공유하려는 경우 TERMINFO환경 변수를 통해 해당 경로를 지정할 수 있습니다.

제어 시퀀스 무시

일부 터미널은 대체 화면 전환을 비활성화하는 제어 시퀀스를 지원합니다. 예를 들어 xterm에는 옵션이 있지만 gnome-terminal에는 없습니다.

xterm의 경우XResources,예를 들어

XTerm*titeInhibit: true

프로그램별 구성

일부 프로그램에는 보내는 제어 시퀀스/terminfo 명령을 구성하는 구성 파일이 있습니다. 예를 들어

$ LESS=X less foo

less화면을 지우거나 복원하지 않도록 구성합니다 .

vim다음과 같은 것을 포함할 수 있기 때문입니다 .

set t_ti= t_te=

그것은 당신에게 달렸습니다 ~/.vimrc.

상단의 동작을 구성하는 방법에 대한 옵션을 찾지 못했습니다. 기본적으로 복구 화면을 보내지 않습니다.

관련 정보