tutorial sheet full cheat tmux gnu-screen terminal-emulator ansi-escape terminfo

sheet - tmux scroll



resaltado de la búsqueda de la página de manual de tmux (3)

Cuando busco en, por ejemplo, man ls mientras estoy en una sesión de 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 de tmux da como resultado cadenas de búsqueda resaltadas.

No tengo idea de dónde empezar a buscar para resolver esto. Cualquier consejo es apreciado.


Arreglado. El problema es hacer con la forma en que la screen $TERM maneja las cursivas. De las preguntas frecuentes de tmux :

vim muestra video inverso en lugar de cursiva, mientras que menos muestra cursiva (o solo texto regular) en lugar de reversa. Que 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 del manual. En mi caso, less no estaba resaltando texto, solo mostraba texto regular.

La razón de que esto suceda:

La descripción del término de la pantalla carece de modo cursiva y tiene un modo destacado en su lugar, pero utiliza la misma secuencia de escape que urxvt utiliza para cursiva. Esto significa que las aplicaciones (como vim) que buscan cursivas no las encontrarán y que podrían invertir para invertir en su lugar, mientras que las aplicaciones (como menos) que piden sobresaliente terminarán con cursivas en lugar de inversas.

La solución es crear un nuevo archivo terminfo para tmux , que le permita saber que las cursivas son compatibles. La solución se describe en (al momento de escribir) muy, muy al final de las preguntas frecuentes de tmux .

Después de crear el nuevo archivo terminfo , en tmux : Cb :source-file /absolute/path/to/.tmux.conf (de esta pregunta del Superusuario ): esto debería hacer que tmux vuelva a cargar el archivo .tmux.conf . Sin embargo, esto no me funcionó, y los cambios solo se aplicaron después de reiniciar el servidor tmux (cierre todas las sesiones de tmux , luego vuelva a abrirlos).


Basado en las páginas de Less Colors For Man de Gen2ly , aquí está mi página de manual y cómo hacerlo:

Avance

Esto es un shell, no una página web!

Cómo

  1. (Opcional) Estoy usando el tema de Tomorrow para Konsole/Yakuake ;
  2. Edite su ~/.bashrc ~/.zshrc , etc. para agregar:

    # 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. Recargue su configuración y pruebe una búsqueda de la página de manual:

    . ~/.bashrc && man ls


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

... pero las instrucciones no están completamente claras sobre cuándo o dónde sustituir la cadena -256color. Yo 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 intenté una vez sin el color -256 y como eso no funcionó (aún viendo cursivas en lugar de resaltar), tuve que eliminar todo lo que estaba debajo del directorio .terminfo (otro directorio llamado ''s'') antes de que funcionara infocmp.