¿Cómo saltar a un encabezado específico en una página de manual?

9

Ejemplo: ssh_config

He establecido un tipo de archivo en vim para esto. Quiero que el programa de ayuda sea

man

Por supuesto, esto no funciona, si estoy en una palabra, digamos

ServerAliveCountMax

Me sale un error, ya que no hay un buscapersonas para ServerAliveCountMax, está dentro de la página de manual de ssh_config.

¿Hay alguna forma de, desde la línea de comando, saltar a una cadena o ejecutar algún tipo de comando dentro de man? Muy similar a la información en realidad:

info screen Miscellaneous

me llevará a la sección Varios de la página de información de pantallas.

¿Es esto posible con el hombre? Incluso ejecutar una búsqueda serviría ...

EDITAR: estoy usando OSX 10.6.5. con el hombre predeterminado (/ usr / bin / man)

EDITAR: hablo un poco de dialecto;), así que me llevaron a la respuesta correcta:

man -P 'less -p PATTERN' ssh_config  

Es la invocación en OSX / * BSD lo que parece.

chiggsy
fuente

Respuestas:

11

Desde la línea de comando para GNU man:

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

o para BSD man:

man -P 'less -p ^ENVIRONMENT' man

saltará al encabezado "MEDIO AMBIENTE" de la página del manual para man.

Aquí hay una función útil:

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[@]}
}

Ejemplos:

Usar normalmente:

mans bash

Vaya al encabezado "DESCRIPCIÓN":

mans ^DESCRIPTION bash

Vaya al encabezado "DESCRIPCIÓN" de cada página de manual en sucesión (presione qy Enterpara pasar a la siguiente):

mans ^DESCRIPTION bash ksh zsh

Vaya al subtítulo "Expansión de parámetros" (puede buscar cualquier cadena usando expresiones regulares):

mans '^ *Parameter Expansion' bash

Busque la expresión regular más reciente que haya utilizado en Less:

mans '' bash

La coincidencia que buscó no se resaltará. Si prefiere que sea así, simplemente elimine -Glas opciones de less.

Esta función no intenta manejar los otros argumentos y opciones que manadmite.

Pausado hasta nuevo aviso.
fuente
prometedor, edité mi pregunta, veo que ejecutó eso usando macports o linux, tengo una opción -P en la lista de opciones de estilo BSD ... intentando eso.
chiggsy
Gracias, lo tengo, pero gracias de nuevo! BAH, no puedo volver a
votar
@Chiggsy: Supongo que -Pfuncionó. Si es así, lo agregaré a mi respuesta.
Pausado hasta nuevo aviso.
Para el registro, voté por su respuesta original. Fue completamente correcto. Su edición, no pude votar. Aunque quería ...
chiggsy
@Chiggsy: ¿Debería agregar el -Pestilo BSD a mi respuesta para referencia futura?
Pausado hasta nuevo aviso.
2

Puede usar PAGERvariables para esta ejecución para evitar problemas de compatibilidad BSD / GNU.

Use "comillas si el título de la sección contiene espacios:

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

usuario503963
fuente
1

/en menos hará una búsqueda hacia adelante y ?hará una búsqueda inversa. Presione hpara ver una lista completa.

Ignacio Vazquez-Abrams
fuente
Vea mi comentario arriba y, de hecho, mi pregunta.
chiggsy
1

En man, puede escribir /seguido de un patrón para que coincida, por ejemplo, para encontrar la sección VINCULACIONES DE TECLAS POR DEFECTO de la página de manual de la pantalla que escribiría

/^DEFAULT KEY BINDINGS
usuario9517
fuente
Si. Esto es cierto, pero tienes que estar en el hombre para hacerlo. Quiero pasar de la cáscara a eso en un solo paso.
chiggsy
1

Utilizo un simple truco para saltar relativamente rápido entre las secciones en las páginas de manual: presiono /^[A-Z]y luego puedo presionar ny Npara saltar hacia adelante y hacia atrás.

La expresión regular de búsqueda utiliza la estructura básica de las páginas de manual típicas: las secciones principales están escritas en mayúsculas y comienzan una línea sin sangría, por lo que deben aparecer al principio de las líneas.

Doron Behar
fuente
1

No me gusta la solución --pager/ -P, porque manse puede usar pero no se puede llamar directamente (por ejemplo, cuando se usa git help ...). Entonces usar un envvar es más flexible. Pero encuentro que el uso es PAGER='less ...algo redundante, porque de lesstodos modos suele ser el buscapersonas predeterminado. Puede usar el LESSenvvar para pasar parámetros directamente a less. Esto también tiene menos problemas de citas. Por ejemplo, esto saltará correctamente a la sección correcta, aunque tenga un espacio:

LESS="-p file system" git help glossary
David Ongaro
fuente
1
¡Arriba con esta respuesta! Gracias :)
Patryk Obara