Как перейти к определенному заголовку на странице руководства?


9

Пример: ssh_config

Для этого я установил тип файла в vim. Я хочу, чтобы программа помощи была

man

Конечно, это не работает, если я на слово, скажем,

ServerAliveCountMax

Я получаю сообщение об ошибке, поскольку для ServerAliveCountMax нет man-пейджера, он находится внутри справочной страницы ssh_config.

Есть ли способ из командной строки перейти к строке или выполнить какой-либо тип команды внутри man? Очень похоже на информацию на самом деле:

info screen Miscellaneous

перенесет меня в раздел Разное на странице информации о экранах.

Возможно ли это с человеком? Даже запуск поиска будет служить ...

РЕДАКТИРОВАТЬ: я использую OSX 10.6.5. с человеком по умолчанию (/ usr / bin / man)

РЕДАКТИРОВАТЬ: Я говорю немного на диалекте;), поэтому я был приведен к правильному ответу:

man -P 'less -p PATTERN' ssh_config  

Является ли вызов на OSX / * BSD, казалось бы.

Ответы:


11

Из командной строки для GNU man:

man --pager='less -p ^ENVIRONMENT' man

или для BSD man:

man -P 'less -p ^ENVIRONMENT' man

перейдет в рубрику "Окружающая среда" на странице справочника man.

Вот удобная функция:

mans () {    # Bash
    local pages string
    if [[ -n $2 ]]
    then
        pages=(${@:2})
        string="$1"
    else
        pages=$1
    fi
    # GNU man
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
    # BSD man
    # man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}

Примеры:

Используйте обычно:

mans bash

Перейдите в раздел «ОПИСАНИЕ»:

mans ^DESCRIPTION bash

Перейдите к заголовку «ОПИСАНИЕ» каждой страницы последовательно (нажмите qи, Enterчтобы перейти к следующей):

mans ^DESCRIPTION bash ksh zsh

Перейдите к подзаголовку «Расширение параметра» (вы можете искать любую строку, используя регулярные выражения):

mans '^ *Parameter Expansion' bash

Найдите самое последнее регулярное выражение, которое вы использовали в Less:

mans '' bash

Совпадение, которое вы искали, не будет выделено. Если вы хотите, чтобы это было, просто удалите -Gиз опций less.

Эта функция не пытается обрабатывать другие аргументы и параметры, которые manподдерживает.


многообещающе, я отредактировал свой вопрос, я вижу, что вы запускали, используя либо macports, либо linux, у меня есть опция -P в списке вариантов дерьмового стиля BSD ... пробуя это.
Chiggsy

Спасибо, я понял, но еще раз спасибо! БАХ, я не могу повторить ваш новый ответ снова :(
chiggsy

@ Чиггси: Я так понимаю, -Pсработало. Если так, я добавлю это к своему ответу.
Приостановлено до дальнейшего уведомления.

Для протокола, я проголосовал за ваш оригинальный ответ. Это было совершенно правильно. Ваше редактирование, я не смог проголосовать. Я хотел, хотя ...
Chiggsy

@ Чиггзи: Должен ли я добавить -PBSD-стиль в мой ответ для дальнейшего использования?
Приостановлено до дальнейшего уведомления.

2

Вы можете использовать PAGERпеременную для этого запуска, чтобы избежать проблемы совместимости BSD / GNU.

Используйте "кавычки, если заголовок раздела содержит пробелы:

PAGER='less -p ^"ENVIRONMENT"' man man


1

/в менее будет выполнять поиск вперед и ?обратный поиск. Нажмите, hчтобы увидеть полный список.


Смотрите мой комментарий выше, и на самом деле, мой вопрос.
Chiggsy

1

В man вы можете набрать, /а затем шаблон для соответствия, например, чтобы найти раздел DEFAULT KEY BINDINGS на странице man экрана, которую вы наберете

/^DEFAULT KEY BINDINGS

Да. Это правда, но вы должны быть в человеке, чтобы сделать это. Я хочу перейти от оболочки к этому за один шаг.
Chiggsy

1

Я использую простой трюк для быстрого перехода между разделами на страницах руководства: я нажимаю, /^[A-Z]а затем нажимаю nи, Nчтобы перейти вперед и назад.

Регулярное выражение поиска использует базовую структуру типичных man-страниц. Основные разделы написаны заглавными буквами и начинаются с строки без отступов, поэтому они должны появляться в начале строк.


1

Мне не нравится --pager/ -Pрешение, потому что manможет быть использовано, но не вызываться напрямую (например, когда вы используете git help ...). Таким образом, использование envvar более гибко. Но я нахожу использование PAGER='less ...избыточного, потому что lessобычно это пейджер по умолчанию. Вы можете использовать LESSenvvar для передачи параметров напрямую less. Это также имеет меньше проблем с цитированием. Например, это будет правильно перейти к правильному разделу, даже если в нем есть пробел:

LESS="-p file system" git help glossary

1
До вершины с этим ответом! Спасибо :)
Патрик Обара
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.