2009-06-26 10 views
12

ahora mi objetivo es mostrar el signo de porcentaje también cuando se ejecuta, por ejemplo, el comandoIncapaz de hacer menos para indicar la ubicación en porcentaje

man emacs 

Si lo ejecuta, se obtiene 'byte de 3300', por ejemplo, .

Alex's answer me sugiere que tenemos que hacer una función de línea separada por

man "$1"| col -b > /tmp/manual 
less /tmp/manual 

donde $ 1 se refiere al primer parámetro.


El nuevo problema está en el thread. ¡Gracias a Yuliy por el movimiento crucial!

+1

Esto parece infinitamente recursivo. es decir, la llamada al hombre dentro de la función llamará a la función 'hombre', no al ejecutable' hombre'. – Yuliy

+0

Abrí un nuevo hilo para el nuevo problema: http://stackoverflow.com/questions/1053707/unable-to-make-a-shell-function-in-bash-zsh –

+0

@Yuliy: Hiciste el movimiento crucial. Necesitamos desvincular la función man de alguna manera configurando una variable ficticia, tal vez. –

Respuesta

18

Solución

Una versión menos mano de knitatoms' answer combinado con Alex Marteilli's answer funciona bastante bien: Paso de la opción +Gg a less a través de su opción de buscapersonas.

Por ejemplo, trate

man -P 'less -s -M +Gg' man 

Esto se puede realizar de forma permanente, poniendo

export MANPAGER='less -s -M +Gg' 

en uno de los archivos de configuración de shell (por encima de la sintaxis es para Bash y ZSH). Ahora, por ejemplo, man man muestra el porcentaje que desea .

Advertencia

Usted debe no poner el +Gg en la variable LESS! Por ejemplo, haciendo

export LESS='-M +Gg' 

causará problemas al leer archivos muy grandes. Por ejemplo,

yes | LESS='-M +Gg' less 

no funciona muy bien ...

Explicación

Como otras respuestas han explicado, el problema es que less no se puede decir lo ciento en el archivo que está hasta que sepa cuánto dura el archivo , y no lee hasta el final del archivo de forma predeterminada al leer desde un conducto.

Desde la sección de OPTIONSman less:

+  If a command line option begins with +, the remainder of that 
     option is taken to be an initial command to less. For exam‐ 
     ple, +G tells less to start at the end of the file rather than 
     the beginning, and +/xyz tells it to start at the first occur‐ 
     rence of "xyz" in the file. As a special case, +<number> acts 
     like +<number>g; that is, it starts the display at the speci‐ 
     fied line number (however, see the caveat under the "g" com‐ 
     mand above). If the option starts with ++, the initial com‐ 
     mand applies to every file being viewed, not just the first 
     one. The + command described previously may also be used to 
     set (or change) an initial command for every file. 

Los medios g "Para volver al principio del archivo".

Desde el man man:

-P pager, --pager=pager 
     Specify which output pager to use. By default, man uses pager 
     -s. This option overrides the $MANPAGER environment variable, 
     which in turn overrides the $PAGER environment variable. It 
     is not used in conjunction with -f or -k. 

     The value may be a simple command name or a command with argu‐ 
     ments, and may use shell quoting (backslashes, single quotes, 
     or double quotes). It may not use pipes to connect multiple 
     commands; if you need that, use a wrapper script, which may 
     take the file to display either as an argument or on standard 
     input. 
+0

¡Muchas gracias por su respuesta clara! –

+1

@Masi: ¡Gracias por la recompensa! – ntc2

+0

¡Bienvenido! –

13
export LESS="-m" 

En términos más generales, la variable de entorno LESS puede contener opciones equivalentes a las banderas de línea de comandos que podría pasar explícitamente cuando se ejecuta less - aquí, la opción -m que le dice que pedirá más rico (incluido el porcentaje, como se tu preguntaste). También puede pasar más de una opción dentro de esa única variable de entorno finalizando cada una con un $. Para mucha más información, vea less's manpage.

Editar: es por supuesto posible (dependiendo de cómo se está utilizando menos, por ejemplo, si usted es la tubería para que en lugar de llamar en un archivo) que menos no saben el tamaño total se mostrará, en cuyo caso, por supuesto, no se puede mostrar el%; en ese caso, se le preguntará qué poca información tiene, por ejemplo, cuánto texto ha mostrado hasta el momento. Por ejemplo, man usa less de esa manera, por tuberías.

tanto, si su necesidad específica es ver el% en man (en lugar de cuando se llama a less directamente en un archivo) es necesario utilizar un "localizador alternativo" (variable de entorno MANPAGER o cambiar -P en la línea man de comandos) que es un script simple que guarda la salida man en un archivo temporal y luego usa less en este último. (Eso puede perder la propia "coloración" del hombre a menos que juegue trucos más profundos, etc., etc. De manera similar, puede usar la opción "páginas de preformat" de man y descomprimir dicha página preformateada en un archivo temporal para ejecutar less, etc., pero esto comienza a convertirse en un "guión simple" algo complejo ;-).

+0

@Alex: Parece que algo está mal en mi Less, ya que veo: http://files.getdropbox.com/u/175564/bugLess.png. Cuando voy al final del manual, el signo de porcentaje comienza a funcionar. --- Inhabilité mi .zshrc para que el error no pueda estar en él. –

+0

Es posible (dependiendo de cómo esté usando menos, por ejemplo, si está conectado a él en lugar de llamarlo en un archivo) que menos * no sabe * el tamaño total que se mostrará, en cuyo caso, por supuesto no puede mostrar el%. Aquí, permítanme editar la respuesta con esta observación para completarla. –

+0

@Alex: Por favor, vea mi intento de sus sugerencias en mi pregunta. –

1

Tengo esto en mi entorno. Imprimirá <filename> - Lines X-Y of Z en la parte inferior, o al menos tanta de esa información como lo ha hecho.

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...' 
+0

@John: uso OS/X. Tu código no tiene efecto en mi Less. Solo elimina mis números de línea establecidos por% export LESS = '- N'% –

+0

Puede obtener casi lo mismo con '-M', ¡pero gracias por mostrarme cómo se hace entre bastidores! –

8

Para añadir a la respuesta Alex Martelli':

en cuenta que también puede pasar cualquier parámetro de línea de comando para menos en tiempo de ejecución, con solo teclear ella (incluyendo el -), seguido de la tecla enter. Por lo tanto, puede escribir

-m<Enter> 

en una ejecución menor para alternar el aviso largo.

Esto es especialmente útil para las opciones que deben cambiarse en el tiempo de ejecución, p. -S (línea doblada con./desc.).

+0

@sleske: ¿Debería la opción -S dar pliegues similares a los de Vim? --- Parece eliminar las líneas vacías duplicadas por una línea vacía. –

+1

No, -S (Shift-S) simplemente envuelve las líneas, en lugar de cortarlas en el borde de la pantalla. Lo que estabas viendo era -s (solo una pequeña s), lo que de hecho elimina las líneas vacías duplicadas. – sleske

10

En Linux acabo de ir al final de la página hombre con Shift +G luego volver al comienzo con g. (O puede volver a su posición anterior con '').

Less then tiene suficiente información para mostrar el porcentaje de qué tan lejos está el archivo. (Es posible que necesite escribir -M para obtener el indicador largo.)

Es un poco un hack pero solo dos pulsaciones de tecla. No estoy seguro de si esto funciona en OS/X.

3

Con un tiempo de ejecución en vivo less Solía ​​-M.

Eso es "-MIngrese" en el indicador : con menos ejecución.

Con buffers realmente grandes también tuve que ir al final para "descubrir" su tamaño. Fin y Inicio.


Nota: Me hubiera publicado como un comentario a la respuesta @sleske 's, pero la última que recuerdo, los comentarios no son compatibles con <kbd>Keyboard<kbd> etiquetas.

Cuestiones relacionadas