В 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.