화면을 지우지 않고“덜”나가는 방법이 있습니까?


68

상대적으로 자주, 나는 내 자신이 종료하고 less싶지만 다시보고자하는 것을 화면에 남겨 두었다 . 이것을 할 수있는 방법이 있습니까? 해결 방법?

(현재 해결 방법은 종료 한 다음 사용하는 것 more입니다. 따라서 그보다 나은 해결 방법을 환영합니다. 이미 내부에 들어가면 less쉘 설정이나 스크립팅으로 사용할 수있는 것이 이상적입니다 .)

내 데스크탑은 OSX이지만 RHEL 및 Ubuntu 서버를 사용합니다.


1
긴 출력 ( git diff또는 in git log)을 읽으면 less -X터미널에서 스크롤 버퍼를 사용하여 이전 출력의 많은 부분을 제거합니다. less종료 시점에 마지막 화면 출력으로 종료 할 수 있다면 좋겠습니다 . 즉, 종료 후에 스크롤 버퍼의 페이지를 두 개 이상 가져 가지 않습니다 less. 어떤 아이디어?
musiphil

그건 그렇고, -R일반적으로보다 안전한 선택 -r입니다.
musiphil

감사. 궁금한 분들 :-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett

@musiphil 아마도 -c?
바네사 핍 프스

@ MatthewPhipps : -c내부를 움직일 때 화면을 업데이트하는 방법에 관한 것 같습니다 less.
musiphil

답변:


68

이것은 실제로 사용중인 터미널 에뮬레이터의 기능입니다 (xterm, gnome-terminal, konsole, screen). 같은 프로그램 때 대체 화면 또는 altscreen이 시작됩니다 less또는이 vim호출됩니다. 이 altscreen에는 기록 버퍼가 없으며 프로그램을 종료하면 즉시 종료되어 이전 창 내용 기록 및 배치를 복원하는 원래 화면으로 돌아갑니다.

less"-X"인수를 전달하여 altscreen에서 시작 되지 않도록 할 수 있습니다 .

less -X /path/to/some/file

"-X"를 환경 변수로 전달할 수도 있습니다. 따라서를 사용하는 경우 다음 bash위치에 배치하십시오 ~/.bashrc.

export LESS="-X"

그러나 이로 인해 termcap (터미널 기능) 초기화 및 초기화 해제가 비활성화되어 사용할 때 다른보기 less가 나타나지 않을 수 있습니다.

다른 옵션은 screen에서 옵션 을 사용 하고 설정하는 altscreen off~/.screenrc입니다. less화면을 지우지 않고 색상 서식을 유지해야합니다. 아마도 tmux같은 옵션이있을 것 입니다.

블로그 항목 은 문제를 설명하고 gnome-terminal다양한 성공을위한 다양한 솔루션을 제공합니다 .


2
완전한. 단점이 있습니까?
Steve Bennett

2
잠깐, 나는 이미 하나를 발견했습니다- git log(및 아마도 다른 색깔의 명령) 의 출력 이 엉망입니다.
Steve Bennett

1
@SteveBennett 충분히 작기 때문에 별명을 만들었습니다.alias les="/usr/bin/less -X"
bonsaiviking

4
이봐, 나는 git log위 의 문제에 대한 해독제를 발견했다고 생각한다 export LESS="-r -X". (의 부작용 무슨 생각이 입니다 ...)
스티브 베넷

5
사실, git세트 LESS에 변수 FRSX그냥 떠날 수는, 호출기를 실행하면이 설정되지 않은 경우를 LESS해제하고 less자동으로 실행됩니다 -FRSX. 자세한 내용 은 core.pager에서 찾아 보십시오 git-config(1).
musiphil

4

George의 솔루션은 나를 위해 작동하지 않았지만이 솔루션은 그의 답변에 링크 된 블로그 항목 에서 수행되었습니다.

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. ~ / xterm-noclear.src 편집

    • 두 번째 줄의 이름을 'xterm'에서 'xterm-noclear'로 바꾸십시오.

    • 'smcup'및 'rmcup'명령어를 제거하십시오 (예 : "smcup = \ E [? 1049h,"및 "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear는 ~ / .terminfo 디렉토리에 나타납니다)

  5. $ export TERM=xterm-noclear (이제 이하의 동작을 확인하고 만족하는 경우 ~ / .profile에 내보내기 지시문을 추가하십시오)

(저는 @jah의 거부 된 George의 답변 편집에서이 지침을 직접 복사했습니다.)


4

내가 이것을 기억하는 방법은 less -SEX출력을 화면에 덤프해야하지만 줄 바꿈을 원하지 않는 경우입니다. 예를 들면 docker ps | less -SEX다음과 같습니다.

  • -S
    • 줄 바꿈 대신 스크롤
    • 당신이 드롭하면 -E, 화면을 스크롤하려면 화살표 키를 사용할 수 있습니다
  • -E
    • EOF에 도달하면 종료
  • -X
    • 용어 교환 / 블랭킹 방지
    • "메모리"부분은 S와 E가 무엇을하는지 알고 있으므로 이것이 다른 부분이어야합니다. (이 명령을 메모리에 커밋하는 이유는 래핑되지 않은 출력을 덤프 (대화식 세션에 들어 가지 않음)하려는 것입니다.

당신이 기억할 수 없다면, 당신 less -SEX에게 많은 희망이 없습니다. 추측 할 때마다 다시 Google로 연결하십시오.


그 남자는 문제가 있고 그에게 덜 섹스를 제공합니까?
yossico
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.