Realce fixo no tmux


18

Sinto falta de destacar (modo reverso) no console desde que comecei a usar o urxvt + tmux como terminal principal. Os destaques foram substituídos por fonte em itálico - o que parece bem legal no início - no entanto, não consigo encontrar a palavra em itálico em milhares sem itálico quando tento pesquisar algo em a less.

Isso funciona corretamente enquanto o tipo de terminal estiver definido como um xterm*perfil (por exemplo, set -g default-terminal "xterm-color"em .tmux.conf ). No entanto, alguns atalhos não funcionam, os aplicativos não podem obter a geometria adequada do terminal, ... neste caso.

Respostas:


11

Encontrei informações e soluções sobre isso nas páginas do tmux:

A descrição de terminfo da tela não possui o modo itálico e possui o modo de destaque, mas usando a mesma sequência de escape urxvtusada para itálico. Isso significa que os aplicativos (como vim) que procuram itálico não o encontrarão e podem virar para reverter em seu lugar, enquanto os aplicativos (como menos) que solicitam destaque serão finalizados com itálico em vez de reverso.

[Correção 1] Substitua as entradas terminfo e obtenha reverso + itálico

(por usuário!)

Para fazer aplicações cientes de que tmuxsuporta itálico e para usar uma seqüência de escape adequada para destaque, você vai precisar para criar um novo terminfo arquivo com modificados sgr, smso, rmso, sitme 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

E diga ao tmux para usá-lo no ~ / .tmux.conf :

set -g default-terminal "screen-it"

Se o seu terminal suportar 256 cores, use:

$ screen_terminfo="screen-256color"

em vez de "tela". Consulte a entrada da FAQ sobre suporte a 256 cores para obter mais informações. Observe também que o tmux ainda exibirá o vídeo reverso em terminais que não suportam itálico.

Se você urxvtnão puder exibir itálico, verifique se você tem uma fonte com capacidade para itálico ativada, por exemplo, adicione ~ / .Xdefaults :

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

[Fix 2] Simplesmente substitua os caracteres de controle itálico pelo reverso

Adicione esta substituição de terminal ao ~ / .tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'

2
A correção 1 parece funcionar, mas é 2015, isso pode ser realmente tão difícil?
user1338062

Infelizmente, eu não consigo encontrar nenhuma solução melhor para este problema + Tenho parou de procurar quando eu achei essa mensagem em uma lista de discussão tmux ... :(
andras.tim

4
Bem, de acordo com a FAQ do tmux, o tmux 2.1 deve corrigir o comportamento. Então acho que isso só é necessário temporariamente. Eu, pessoalmente, apenas fez o que o OP disse e definir o meu default-terminalpara xterm.
user1338062

Às vezes isso não é tão bom. Por exemplo, quando você tem que ser compatível com o PuTTY, você não pode usar xtermapenas screeenvariantes.
andras.tim

11
A correção 1 funcionou para mim, mas fez meu solarizado dircolorsdesaparecer; Consegui corrigi-lo adicionando TERM screen-ità lista de terminais em ~/.dircolors.
Benjamin W.

4

Maneira mais rápida:

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

Funciona sem nenhuma mágica adicional (e ainda dá atenção ao aviso no manual do tmux sobre o tipo de terminal que precisa ser "tela" ou um derivado).


11
Funciona perfeitamente para mim, por exemplo, watch -n10 -d COMMAND args..permite detectar alterações agora (como espaços em branco! Como você faz espaços em branco em itálico?). Eu acho que essa deve ser a resposta aceita. Nota: Quando o terminal já estiver aberto, useTERM=screen.xterm-new; export TERM
Tino

2

Eu corro o urxvt no arch linux. A resposta da operação não me ajudou. Isso me ajudou:

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


procure italice execute isso; então, coloque isso na configuração do tmux

set -g default-terminal "tmux"

não use "tmux-256color". (tente, suponho, mas não funcionou para mim.)


finalmente, adicione isso ao seu rc (.zshrc, .bashrc, etc):

export TERM="xterm-256color"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.