В Unix-подобных системах мы часто обращаемся к документации с помощью команды man
, но иногда этого недостаточно.
GNU Info — это альтернативная система документации, которая, хотя и необычна, предоставляет наиболее полную документацию по программному обеспечению GNU.
Если у вас возникли проблемы с использованием программы Info, не беспокойтесь — это руководство поможет вам ориентироваться в ней как профессионалу!
Что такое информация GNU?
Программа info
представляет собой автономное терминальное приложение, являющееся частью системы документации GNU Texinfo, которое позволяет вам просматривать «Info-файлы» на терминале.
Что такое информационные файлы?
Хотя большинству пользователей не нужно беспокоиться об этом, файлы Info (.info
) обычно являются результатом обработки исходных файлов Texinfo (.texi
) с помощью программы makeinfo
(также являющейся частью проекта Texinfo).
Файлы Texinfo также могут создавать печатный вывод (например, PDF) и HTML. Это мало чем отличается от исходных файлов «roff», используемых в справочных страницах, которые могут создавать текст для отображения на терминале, PDF и HTML.
Почему информация? Разве справочных страниц недостаточно?
Традиционная man-система Unix основана на системе форматирования документов «roff» от Bell Labs. Однако эта система не была свободным программным обеспечением и не могла использоваться проектом GNU. Позже была разработана бесплатная альтернатива под названием groff, но на это ушло несколько лет.
Вместо этого они создали GNU Texinfo с помощью свободно доступной системы набора текста TeX.
Кроме того, файлы Texinfo имеют древовидную структуру с узлами, которые могут быть связаны друг с другом. Это позволяет вести документацию, которая просто невозможна для справочных страниц — они не содержат всю информацию на одной странице, а разбросаны по разным узлам.
Автономный и Emacs
В этом руководстве основное внимание уделяется автономной программе info
, которая работает независимо от Emacs, популярного текстового редактора, который также имеет встроенную программу чтения информации.
GNU, вероятно, сочтет Emacs каноническим средством чтения информации — там более безупречный пользовательский интерфейс. Но этот автор считает, что info
достаточно для пользователей, не использующих Emacs.
Вызов информационной программы
Чтобы использовать программу info
, введите следующую команду:
info [option…] [manual] [menu-or-index-item…]
Info ищет запись с именем manual
в своем каталоге файлов (называемом «dir»). Если вы не предоставите руководство, info
отобразит список, созданный путем объединения файлов «dir».
Если вы хотите получить доступ, например, к документации по команде ls
, вы должны ввести info ls
. Вы также можете указать имя «пункта меню» (дочернего узла), который вы хотите прочитать.
Навигация по узлу
В информационной системе GNU руководство состоит из «узлов», принадлежащих «дереву». За исключением верхнего узла, каждый узел соответствует главе.
Вот краткое руководство о том, как эффективно перемещаться по этим узлам:
- Используйте
<Backspace>
и<Space>
(илиPgUp
иPgDn
) для прокрутки вверх и вниз. (Это полноэкранная навигация. К сожалению, полуэкранная навигация невозможна, если вы не используете--vi-keys
.) Эти клавиши также позволяют перейти к следующему или предыдущему узлу, если вы находитесь на краю узла. - Перейдите к верхней или нижней части узла с помощью
Home
иEnd
. В отличие от предыдущих клавиш, они не будут переходить к другим узлам при повторном нажатии. - Используйте
[
и]
для перемещения между узлами «в глубину». - Нажмите
n
иp
, чтобы перейти к следующему или предыдущему узлу на текущем уровне, «в ширину». (Это опасно, потому что вы рискуете пропустить дочерние узлы. Только[
и]
гарантируют, что вы будете читать руководство по порядку.) - Нажмите
u
, чтобы подняться на один уровень вверх, иt
, чтобы перейти непосредственно к верхнему узлу дерева. - Нажмите
d
, чтобы перейти к «каталогу».
Перекрестные ссылки
В info
гиперссылки называются «перекрестными ссылками».
Вы можете перемещать курсор между перекрестными ссылками, используя TAB (вперед) и Alt-TAB/Shift-TAB (назад). Как только ваш курсор окажется над перекрестной ссылкой, нажмите ENTER, чтобы следовать за ней. Вы можете нажать l
, чтобы вернуться туда, откуда пришли.
Информационная система имеет два типа перекрестных ссылок:
- Пункты меню,
- Примечания.
Пункты меню — это способ представления «дочерних узлов» текущего узла. Им предшествует звездочка, и они должны стоять после строки, которая выглядит следующим образом: * Menu:
.
Они имеют вид:
* Foo Label: Foo target. More information about Foo.
Где «Foo target» — это целевой узел. Если узел назначения совпадает с меткой, они могут использовать следующий сокращенный способ:
* Foo:: More information about Foo.
Вы можете нажать m
, чтобы переключиться в режим меню, ввести название меню и использовать Tab для автозаполнения. Затем нажмите ENTER, чтобы следовать за ним.
Примечания представляют собой встроенные перекрестные ссылки, которые выглядят следующим образом: *Note Label: Target
, где Target
— это имя узла, к которому они вас переведут. Возможен и сокращенный способ. Если перед местом назначения стоит имя файла (в скобках), это означает, что перекрестная ссылка указывает на другое руководство.
Примечания также могут указывать на определенную строку в узле. Это достигается с помощью невидимых «якорных» меток, определенных в исходных файлах Texinfo.
Навигация с помощью сочетаний клавиш vi
Для тех, кто предпочитает сочетания клавиш в стиле vi, а не Emacs, есть встроенная опция --vi-keys
. В целом это неплохо, и работает очень похоже на Vim и less
, но имейте в виду следующее:
- В то время как «j» и «k» двигаются вверх и вниз, «h» и «l» делают совершенно разные вещи (открытие справки и переход к последнему узлу). Я думаю, это нормально, потому что для горизонтальной навигации в
info
нужно только размещать гиперссылки под курсором, но вы уже можете сделать это быстрее с помощью TAB и Alt-TAB. - Чтобы перейти к гиперссылке под курсором, нажмите Alt-g вместо ENTER. (С
--vi-keys
клавиша ENTER переходит на следующую строку. Я полагаю, что это было сделано для имитацииless
. Но вы можете восстановить исходное поведение, добавив\r select-reference-this-line
в файл конфигурации~/.infokey
.) - Из-за команд «Ctrl-u» и «u» для прокрутки на полстраницы вверх вам нужно нажать «Ctrl-x u», чтобы перейти на узел вверх.
Вы также можете использовать информационный режим Emacs с режимом Evil (привязки клавиш vi для Emacs) или реализацию Emacs с предварительно включенным режимом Evil, например Doom Emacs.
В качестве альтернативы, направьте вывод info
на less
, чтобы получить традиционные сочетания клавиш vi:
info ls | less
Делая это, вы теряете доступ к разделённой на части древовидной навигации info
и навигации по гиперссылкам (less
отображает всё руководство на одном экране), но я бы сказал, что это нормально, потому что в большинстве случаев вы хотите читать руководство последовательно.
Использование индекса и поиска
В большинстве руководств по info
есть индексный узел, который служит удобным справочником для поиска конкретных тем.
Кроме того, вы можете использовать команду s
для поиска ключевых слов во всем руководстве. info
также поддерживает vi-подобные клавиши /
и ?
для поиска вперед и назад.
Учитывая, что информация имеет древовидную структуру, вы также можете выполнить Alt-/
для поиска только в текущем поддереве. Эта привязка клавиш явно отсутствует при использовании --vi-keys
. Чтобы включить ее, добавьте в файл конфигурации .infokey
следующее:
\m/ tree-search
Пользовательские цвета
Вы можете настроить внешний вид перекрестных ссылок. Отличая их от обычного контента, вы можете легко перемещаться по информационным страницам GNU.
GNU Info уже добавляет подчеркивание к перекрестным ссылкам, но мы можем сделать лучше. Измените ~/.infokey
(файл конфигурации Info), добавив следующие строки:
#var link-style=blue,bold,underline
Эта простая настройка изменит цвет перекрестных ссылок на синий (как классические гипертексты в Интернете) и сделает их полужирными.
Заключительные мысли
С помощью этого руководства вы сможете легко ориентироваться в программе GNU Info.
Но должны ли вы?
Учитывая его особенности, если вам нужно прочитать документацию по программному обеспечению GNU, вполне разумно вместо этого прочитать HTML-версию, размещенную на веб-сайте GNU.
Спасибо за чтение! Если вам нравятся подобные юмористические истории о технологиях, и вы хотите поддержать меня, чтобы я продолжал писать вечно, подумайте о том, чтобы зарегистрироваться, чтобы стать участником Medium. Это 5 долларов в месяц, что дает вам неограниченный доступ к историям на Medium. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию. Вы также можете подписаться на меня в Medium и Twitter.