터미널 차원 변경 사항에 대한 설명서 페이지를 동적으로 다시 포맷


14

일반적인 워크 플로 중 하나는 터미널에서 수동 페이지를 연 다음 다른 터미널에서 사물을 테스트하는 것입니다. 매뉴얼 페이지는 첫 번째 터미널의 초기 크기로 포맷됩니다. 이제 창 크기를 조정하거나 (WM에서 자동으로 수행하도록) 미리 서식이 지정된 페이지 오른쪽에 간격이 있거나 줄 바꿈이 발생합니다. 이 시점에서 나는 일반적으로 q(uit) and !!(다시 실행) 페이지에서 내 위치를 잃습니다.

포맷 프로세스가 CPU를 많이 사용하거나 고정 터미널 크기의 고대에 기인한다고 가정합니다. less은 이론적으로 가능해야하므로 호출기 동적으로 터미널 크기 조정 이벤트에 반응한다.

나는 매뉴얼 페이지를 꼼꼼히 살펴보고, 웹을 검색하고, IRC를 요청했다.

  • man 유틸리티 내부 또는 외부에서 재 포맷을 트리거 할 수 있습니까?

  • 페이지 크기를 동적으로 조정하는 man 유틸리티 버전이 있습니까?

  • 포맷 / 표시 프로세스의 일부를 사용자 정의하여 업데이트 할 수 SIGWINCH있습니까?


man실제로는 less호출기로 사용 됩니다. 당신은 칠 수 h얻을 수있는 사람이 페이지에서 less도움말 화면. 매뉴얼 페이지의 크기를 동적으로 조정하지 않는 이유를 잘 모르겠습니다.
Michael Mrozek

3
문제 man는 출력을 항의 너비로 렌더링하는 것으로 보입니다 . 당신이 필요로하는 것은 당신이 문서에있는 곳을 북마크하고, 사람을 다시 실행시키고 (파이프 된 이후 실제로 알지 못하는) 다시 북마크 할 수있는 호출기입니다. 또는 호출기를 통합하는 새로운 man 명령입니다.
nix

답변:


11

기본 문제는 한 프로그램에서 서식을 지정하고 다른 프로그램에서 페이징을 수행한다는 것입니다. 포맷터가 창 크기가 변경되었다는 신호를 받고 새 창 크기에 맞게 텍스트를 다시 포맷하더라도 파이프 라인 아래로 새 텍스트를 페이저로 공급하기 만하면됩니다. 호출기가 새 스트림의 현재 위치가 현재 표시중인 이전 스트림의 위치와 일치하는지 확실하게 알 수있는 방법이 없습니다.

호출기가 재 포맷을 수행 할 수 있어야합니다. @Robin Green이 말했듯이 HTML입니다.

HTML을 사용하고 싶지만 터미널에서 계속 작업하려면 HTML man(1)로 출력하도록 지시하고 텍스트 모드 브라우저를 호출하여 표시 할 수 있습니다.

man -Hlynx man

man(1)lynx 텍스트 모드 브라우저에서 맨 페이지 가 표시됩니다 . Lynx는 창 크기 변경에 직접 응답하지 않지만 ctrl-R을 누르면 lynx가 새 창 크기에 대한 페이지를 다시 렌더링합니다.

내가 아는 다른 텍스트 모드 브라우저에는 링크와 elink가 있습니다. 그것들과 lynx를 실험하고 매뉴얼 페이지를 탐색하는 데 가장 좋은 경험을 제공하는 것을 결정할 수 있습니다. 매뉴얼 페이지에 대해서만 사용자 정의 구성을 사용하고 해당 특정 구성으로 브라우저를 호출하는 스크립트를 호출 할 수 있습니다.

원하는 man 옵션을 MANOPT환경 변수에 넣을 수 있습니다 .

$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # manlynx invokes lynx with a different configuration.

HTML을 생성 하려면 groff패키지 를 설치해야합니다 man.


-Hman 에 대한 주장 의 한계는 웹 서버를 사용하지 않고 단순히 작은 파일을 사용한다는 것입니다. 이렇게하면 잘못 구성된 방화벽으로 인한 문제를 피할 수 있지만 다른 매뉴얼 페이지에 대한 하이퍼 링크를 생성 할 수는 없습니다 (최소한 타사 man-> html 스크립트가 지원함).
Robin Green

1
@Robin Green : 크기 조정이 가능한 터미널 창에서 매뉴얼 페이지를 지원하는 것에 대한 질문입니다. 이러한 맥락에서 웹 서버를 사용하지 않는 것은 제한이 아닙니다. 하이퍼 링크가없는 것은 제한 less되지 않습니다. 여기에 표시된 매뉴얼 페이지 에는 하이퍼 링크가 없기 때문입니다.
camh

사실, 그것은 확실한 대답입니다.
Robin Green

4

manserver 와 같은 적절한 스크립트를 사용하여 매뉴얼 페이지를 html로 즉시 변환하여 웹 브라우저에서 볼 수 있습니다 (물론 lynx와 같은 텍스트 기반 웹 브라우저 일 수 있음).

이것은 아마도 아무도이 문제를 해결하지 못한 이유 일 것입니다. 문제는 man-> html 스크립트 개발과 관련이 없기 때문입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.