Se corrigió el resaltado en tmux

18

Echo de menos el resaltado (modo inverso) en la consola desde que comencé a usar urxvt + tmux como terminal principal. Los aspectos más destacados se reemplazaron con letra cursiva , lo que se ve muy bien al principio, sin embargo, no puedo encontrar la única palabra en cursiva en miles que no están en cursiva cuando intento buscar algo en a less.

Esto funciona correctamente mientras el tipo de terminal se establece en un xterm*perfil (por ejemplo, set -g default-terminal "xterm-color"en .tmux.conf ). Sin embargo, algunos accesos directos no funcionan, las aplicaciones no pueden obtener la geometría adecuada de la terminal, ... en este caso.

andras.tim
fuente

Respuestas:

11

He encontrado información y soluciones al respecto en las páginas de tmux:

La descripción de terminfo de la pantalla carece del modo de cursiva y tiene el modo destacado en su lugar, pero usa la misma secuencia de escape que urxvtusa para la cursiva. Esto significa que las aplicaciones (como vim) que buscan cursiva no lo encontrarán y podrían cambiar a reversa en su lugar, mientras que las aplicaciones (como menos) que solicitan sobresalir terminarán en cursiva en lugar de reversa.

[Solución 1] Reemplace las entradas de terminfo y obtenga reversa + cursiva

(¡por usuario!)

Para hacer que las aplicaciones conscientes de que tmuxapoya cursiva y utilizar una secuencia de escape adecuada para sobresaliente, tendrá que crear una nueva terminfo archivo con modificados sgr, smso, rmso, sitmy ritmentradas:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it|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-it"

Si su terminal admite 256 colores, use:

$ screen_terminfo="screen-256color"

en lugar de "pantalla". Consulte la entrada de Preguntas frecuentes sobre el soporte de 256 colores para obtener más información. También tenga en cuenta que tmux seguirá mostrando video inverso en terminales que no admiten cursiva.

Si urxvtno puede mostrar cursiva, asegúrese de tener habilitada una fuente con cursiva, por ejemplo, agregue a ~ / .Xdefaults :

urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true

[Solución 2] Simplemente reemplace los caracteres de control en cursiva por reversa

Agregue esta anulación de terminal a ~ / .tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'
andras.tim
fuente
2
La solución 1 parece funcionar, pero es 2015, ¿puede ser realmente tan difícil?
user1338062
Por desgracia, no puedo encontrar nada mejor solución para este problema + He dejado de buscar cuando encontré esto en una lista de correo tmux ... :(
andras.tim
44
Bueno, de acuerdo con las preguntas frecuentes de tmux, tmux 2.1 debería corregir el comportamiento. Así que supongo que esto solo es necesario temporalmente. Yo personalmente acabo de hacer lo que dijo el OP y puse mi default-terminala xterm.
user1338062
A veces esto no es tan bueno. Por ejemplo, cuando tiene que ser compatible con PuTTY, no puede usar xterm, solo screeenvariantes.
andras.tim
1
La solución 1 funcionó para mí, pero hizo que mi solarizado dircolorsdesapareciera; Pude solucionarlo agregando TERM screen-ita la lista de terminales en ~/.dircolors.
Benjamin W.
4

Forma más rápida:

set -g terminal-overrides "screen.xterm-new"

Funciona sin más magia (y sigue prestando atención a la advertencia en el manual de tmux sobre el tipo de terminal que debe ser "pantalla" o un derivado del mismo).

Steven
fuente
1
Funciona para mí perfectamente, por ejemplo, watch -n10 -d COMMAND args..permite detectar cambios ahora (¡como espacios en blanco! ¿Cómo haces espacios en cursiva?). Creo que esta debería ser la respuesta aceptada. Nota: Cuando el terminal ya está abierto, useTERM=screen.xterm-new; export TERM
Tino
2

Ejecuto urxvt en arch linux. La respuesta del operador no me ayudó. Esto me ayudó a:

https://github.com/tmux/tmux/blob/2.1/FAQ#L355-L383


buscar italicy ejecutar eso; luego, pon esto en tmux config

set -g default-terminal "tmux"

no use "tmux-256color". (pruébalo, supongo, pero no funcionó para mí).


finalmente, agregue esto a su rc (.zshrc, .bashrc, etc.):

export TERM="xterm-256color"
dylnmc
fuente