"less"에서 터미널 재설정을 대화식으로 수정할 수 있습니까?

"less"에서 터미널 재설정을 대화식으로 수정할 수 있습니까?

나는 일반적으로 종료할 때 터미널을 재설정하고 싶지 않습니다 less(즉, 내가 보고 있는 모든 것이 화면에 계속 표시되기를 원합니다). 일반적으로 새 상자에 있고 아직 구성하지 않은 경우 전화를 걸어 less종료하고 화면 재설정을 확인하고 가볍게 욕한 다음 다시 실행하는 less -X ... 경우가 드물지만 화면이 재설정되는 것을 기억합니다 . quit , 이 경우 이벤트 순서가 약간 수정되고 종료하기 전에 약간의 욕설이 있지만 전체적인 효과는 거의 동일합니다.

less종료 시 터미널을 재설정하지 않도록 현재 실행 중인 프로세스를 수정하는 방법이 있습니까 ?

답변1

일부 터미널(예: xterm)에는 대체 화면으로의 전환을 활성화/비활성화하는 메뉴 설정이 있습니다. 대부분은 그렇지 않습니다 ...

그건 그렇고 (일부/대부분의 경우 동일한 질문) 터미널이 원래 xterm을 구현하는 경우 47대체 화면을 지우지 않고 대체 화면으로 다시 전환하려면 대체 화면 전환을 코드하세요. 일부 컬렉션에서는 이 기능을 구현하지 않는 것으로 나타났습니다 TERM=xterm(후자에만 해당).1049코드) -ymmv

당신은 방법을 볼 수 있습니다47코드를 보고 일반적인 터미널 설명에 사용smcup그리고rmcup능력은 다음에서 나온다

infocmp xterm-old

다음 항목이 표시됩니다(다른 항목 중에서).

rmcup=\E[2J\E[?47l\E8,
smcup=\E7\E[?47h,

이것\E[2J존재하다rmcup일반 화면으로 다시 전환하기 전에 (대체) 화면을 지웁니다. 이것\E7그리고\E8커서 위치를 저장/복원합니다(일반 화면의 경우). 만약 당신이 정말로구함이 기능을 무엇이든 대체할 수 있습니다.xterm- 호환 단말기 설명, 화면 클리어 부분 생략, 가능

tput smcup
tput rmcup

명령줄에서 대체 화면에 무엇이 있는지 확인하세요. 명령줄이 일부를 덮어쓰게 되므로 이는 좋지 않지만 도움이 될 수 있습니다.

xterm에는 앞뒤 전환을 위한 메뉴 옵션이 있으므로 xterm에서는 필요하지 않습니다. 하지만 이 접근 방식이 유용할 수도 있습니다.

추가 자료:

답변2

사용 | . cat.

단계별: 을 누르고 프롬프트 에서 Enter를 누른 |다음 프롬프트에서 다시 Enter 를 누르면 현재 페이지가 화면에 유지됩니다.|mark:.!cat|done (press RETURN)less

출력을 있는 그대로 처리하려면 less(백스페이스+밑줄이 밑줄로 변환되고 인쇄할 수 없는 문자가 <XX>다음과 같이 표시됨) less -FX대신 를 사용하십시오 cat.

less(1)맨페이지 에서 :

  | <m> shell-command
          <m> represents any mark letter.  Pipes a section  of  the  input
          file  to the given shell command.  The section of the file to be
          piped is between the first line on the current  screen  and  the
          position  marked by the letter.  <m> may also be ^ or $ to indi-
          cate beginning or end of file respectively.  If <m> is . or new-
          line, the current screen is piped.

나중에 각 xterm 복제를 반복해서 재구성할 필요 없이 단순히 전환 rmcup/ 대체 화면 전환을 원하는 경우 다음 명령을 사용할 수 있습니다.smcup

infocmp | sed 's/[sr]mcup=[^=]*,//g' | tic -

~/.terminfo현재 터미널에 대한 터미널 설명을 쓰고 대체 화면 전환에 대한 코드를 생략합니다. /usr/share/terminfo대부분의 프로그램보다 우선적으로 사용해야 합니다 .

관련 정보