resaltado de la búsqueda de páginas de manual de tmux


Cuando busco en, por ejemplo, man ls mientras estoy en una sesión tmux, las cadenas de búsqueda no aparecen resaltadas: la página salta hacia abajo para que la cadena de búsqueda esté en la línea superior del búfer, como se esperaba, pero no está resaltada.

Hacer lo mismo en el mismo shell mientras no está en una sesión tmux resulta en cadenas de búsqueda resaltadas.

No tengo idea de por dónde empezar a buscar para resolver esto. Cualquier pista es apreciada.

Author: Richard Hansen, 2012-05-10

3 answers

Basado en Menos Colores Para las Páginas de Manual por Gen2ly, aquí está mi página de manual y cómo hacerlo:

Vista previa

¡Esto es un shell, no una página web ! Resaltado de búsqueda personalizada en la página de manual

Cómo

  1. (opcional) Estoy usando Tomorrow theme para Konsole/Yakuake ;
  2. Edite su ~/.bashrc ~/.zshrc, etc. para añadir:

    # Colored man pages: http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/
    # Less Colors for Man Pages
    export LESS_TERMCAP_mb=$'\E[01;31m'       # begin blinking
    export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # begin bold
    export LESS_TERMCAP_me=$'\E[0m'           # end mode
    export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
    export LESS_TERMCAP_so=$'\E[38;5;016m\E[48;5;220m'    # begin standout-mode - info box
    export LESS_TERMCAP_ue=$'\E[0m'           # end underline
    export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
    
  3. Vuelva a cargar su configuración e intente una búsqueda en la página de manual:

    . ~/.bashrc && man ls
    
 19
Author: Édouard Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-05 15:51:31

Lo arreglé. El problema tiene que ver con la forma en que la screen $TERM maneja cursiva. Desde el tmux FAQ :

Vim muestra el video inverso en lugar de cursiva, mientras que less muestra cursiva (o simplemente texto normal) en lugar de inverso. ¿Qué pasa?

Esto coincide exactamente con mi problema. El $PAGER usado por man es less por defecto - básicamente, man usa less para mostrar el contenido de las páginas de manual. En mi caso, less no estaba resaltando el texto, solo mostrando texto regular.

La razón de que esto suceda:

La descripción del terminfo de la pantalla carece del modo cursiva y tiene un modo destacado en su lugar, pero usando la misma secuencia de escape que urxvt usa para cursiva. Este significa que las aplicaciones (como vim) que buscan cursiva no lo encontrarán y podrían a su vez a la inversa en su lugar, mientras que las aplicaciones (como menos) pidiendo el sobresaliente terminará con cursiva en lugar de reversa.

La solución es hacer un nuevo archivo terminfo para tmux, que le permite saber que las cursivas son compatibles. La solución se describe en el (en el momento de escribir) muy, muy abajo de la tmux FAQ.

Después de crear el nuevo archivo terminfo, en tmux: C-b :source-file /absolute/path/to/.tmux.conf (from this SuperUser question) - this should make tmux reload the .tmux.conf file. Sin embargo, esto no funcionó para mí, y los cambios solo se aplicaron después de reiniciar el servidor tmux (cierre todas las sesiones tmux y luego vuelva a abrirlas).

 19
Author: simont,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-20 10:18:14

Este hilo tiene algunos años, pero sigue siendo el que aparece como el mejor resultado de búsqueda, así que estoy respondiendo con lo que finalmente funcionó para mí. Esto se basa en tmux FAQ .

...pero las instrucciones no son completamente claras sobre cuándo o dónde sustituir la cadena-256color. Uso gnome-terminal (v 3.16.2) con tmux, y esto funcionó para mí:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen-256color"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-256color|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

Y dile a tmux que lo use en ~/.tmux.conf:

set -g default-terminal "screen-256color"

Nota: Lo probé una vez sin el color-256 y dado que eso no funcionó (aún viendo cursiva en lugar de resaltado), tuve que eliminar todo bajo el .terminfo dir (otro dir llamado 's') antes de que el infocmp funcionara.

 12
Author: Christy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-07 00:18:52