터미널 크기 변경에 따라 매뉴얼 페이지의 형식을 동적으로 재지정합니다.

터미널 크기 변경에 따라 매뉴얼 페이지의 형식을 동적으로 재지정합니다.

나에게 일반적인 작업 흐름은 터미널에서 매뉴얼 페이지를 연 다음 다른 터미널에서 테스트 항목을 여는 것입니다. 매뉴얼 페이지는 첫 번째 터미널의 초기 크기로 형식화됩니다. 이제 창 크기를 조정하거나 WM에서 자동으로 크기를 조정하면 미리 형식이 지정된 페이지의 오른쪽에 공백이 생기거나 줄바꿈이 발생합니다. 이 시점에서 나는 일반적으로 q(uit) 및 !!(run again)을 수행하는데, 이는 페이지에서 내 위치를 잃습니다.

포맷 프로세스는 CPU를 많이 사용하거나 터미널 크기를 수정하는 고대 프로세스에서 비롯된 것일 수도 있습니다. 호출기는 less터미널 크기 조정 이벤트에 동적으로 반응하므로 이론적으로는 가능합니다.

나는 매뉴얼 페이지를 자세히 살펴보고, 웹을 검색하고, IRC에 질문하는 등 모든 것을 시도했지만 아무것도 얻지 못했습니다.

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

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

  • 서식 지정/표시 프로세스의 특정 부분을 사용자 정의하여 업데이트할 수 있는 방법이 있습니까 SIGWINCH?

답변1

기본적인 문제는 한 프로그램에서 포맷을 수행하고 다른 프로그램에서 페이징을 수행한다는 것입니다. 포맷터가 창 크기가 변경되었다는 신호를 받고 새 창 크기에 따라 텍스트의 형식을 다시 지정하더라도 새 텍스트를 호출기로 파이프하는 것뿐입니다. 호출기는 새 스트림의 어느 위치가 현재 표시 중인 이전 스트림의 위치에 해당하는지 확인할 수 없습니다.

필요한 것은 다시 포맷할 수 있는 호출기입니다. @Robin Green이 말했듯이 이것은 HTML입니다.

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

man -Hlynx man

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

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

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

$ export MANOPT=-Hlynx
$ export MANOPT=-Hmanlynx # provide your own wrapper to execute
                          # lynx with a different configuration.

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

답변2

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

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

관련 정보