Jednym z moich typowych przepływów pracy jest otwieranie strony podręcznika w terminalu, a następnie innego terminala, w którym można przetestować. Strona podręcznika jest sformatowana do początkowych wymiarów pierwszego terminala. Kiedy teraz zmieniam rozmiar moich okien (lub każę mojej WM zrobić to dla mnie automatycznie), po prawej stronie wstępnie sformatowanej strony jest przerwa lub zawijanie się linii. W tym momencie zwykle q
(uit) i !!
(biegnę ponownie), co traci moją pozycję na stronie.
Zakładam, że proces formatowania wymaga dość dużej mocy obliczeniowej procesora, a może wywodzi się z czasów starożytnych o stałych rozmiarach terminali. less
Pager dynamicznie reaguje na końcowych wydarzeniach rozmiaru, więc powinno być możliwe w teorii.
Próbowałem przeglądać strony podręcznika użytkownika, przeszukiwać Internet, pytać na IRC - cała ta sprawa - ale nie mogłem nic wymyślić.
Czy mogę uruchomić formatowanie z poziomu narzędzia man lub poza nim?
Czy istnieje wersja narzędzia man, która dynamicznie zmienia rozmiar strony?
Czy istnieje sposób dostosowania części procesu formatowania / wyświetlania, aby był aktualizowany
SIGWINCH
?
man
faktycznie używaless
jako pager; możeszh
wejść na stronę podręcznika,less
aby wyświetlić ekran pomocy. Nie jestem pewien, dlaczego dynamicznie nie zmienia rozmiaru stronman
renderuje dane wyjściowe na szerokość terminu. To, czego potrzebujesz, to pager, który może utworzyć zakładkę w miejscu, w którym znajduje się w dokumencie, ponownie uruchomić man (o czym tak naprawdę nie ma pojęcia, ponieważ jest do niego przesyłany) i powrócić do zakładki. Alternatywnie, nowe polecenie man, które zawiera pager.Odpowiedzi:
Podstawowym problemem jest to, że formatowanie jest wykonywane przez jeden program, a stronicowanie przez inny. Nawet jeśli formatyzator otrzyma sygnał zmiany rozmiaru okna i sformatuje tekst dla nowego rozmiaru okna, wszystko, co może zrobić, to przesłać nowy tekst w dół potoku do pagera. Pager nie ma pewności, która pozycja w nowym strumieniu odpowiada pozycji w starym strumieniu, który aktualnie wyświetlał.
Potrzebne jest, aby pager mógł dokonać ponownego formatowania. Jak powiedział @Robin Green, to HTML.
Jeśli chcesz korzystać z HTML, ale nadal pracujesz w terminalu, możesz powiedzieć,
man(1)
aby wyświetlać w HTML i wywołać przeglądarkę tekstową, aby go wyświetlić.Spowoduje to wyświetlenie strony
man(1)
man w przeglądarce tekstowej rysia. Lynx nie reaguje bezpośrednio na zmiany rozmiaru okna, ale możesz nacisnąć ctrl-R, a lynx ponownie renderuje stronę dla nowego rozmiaru okna.Są dwie inne przeglądarki tekstowe, które znam: linki i elink. Możesz eksperymentować z tymi i rysiami i ustalić, które zapewniają najlepsze wrażenia podczas przeglądania stron podręcznika man. Możesz użyć niestandardowej konfiguracji tylko dla stron podręcznika i wywołać skrypt, który wywołuje przeglądarkę z tą konkretną konfiguracją.
Możesz wstawić opcje man do
MANOPT
zmiennej środowiskowej.Będziesz musiał zainstalować
groff
pakiet,man
aby móc generować HTML.źródło
-H
argumentu do człowieka jest to, że nie używa on serwera WWW, ale po prostu małego pliku. Chociaż pozwala to uniknąć problemów ze źle skonfigurowanymi zaporami ogniowymi, nie pozwala na generowanie hiperłączy do innych stron podręcznika (które obsługują przynajmniej niektóre skrypty man-> html innych firm).less
nie zawierają hiperłączy.Konwertuj strony podręcznika do formatu html w locie za pomocą odpowiedniego skryptu, takiego jak manserver , przeglądając je w przeglądarce internetowej (która może oczywiście być przeglądarką tekstową, taką jak lynx).
Jest to prawdopodobnie powód, dla którego nikt nie rozwiązał tego problemu - ponieważ problem stał się nieistotny przy opracowywaniu skryptów man-> html.
źródło