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

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

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

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

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

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

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



답변

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

호출기가 재 포맷을 수행 할 수 있어야합니다. @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.


답변

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

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


답변