Eu segui (e modifiquei) esta postagem do Reddit para fazer o itálico funcionar no Terminal.app e no tmux(1).
trabalho em itálico
O comando
echo -e "\e[3mfoo\e[23m"
gera foo (com itálico) em uma sessão de terminal regular e uma sessão tmux.
Também em ambos, a sequência de comandos
vim README.md
i*foo*<Esc>
edita um arquivo README.md
e mostra o texto *foo*
em itálico.
Exceto em menos
No tmux, less(1) mostra todas as linhas "enfatizadas" (como o prompt) usando itálico.
Fora do tmux, sem charuto. less usará o destaque reverso "normal" para mostrar as linhas enfatizadas.
Pergunta
Por que o comportamento observado é menos diferente entre uma sessão regular e o tmux, mas outros programas não?
Como posso fazer menos se comportar de maneira mais uniforme?
Informação relevante
TERM
: ouxterm-256color
outmux-256color
xterm-256color
etmux-256color
definições:
# A xterm-256color based TERMINFO that adds the escape sequences for italic.
#
# Install:
#
# tic xterm-256color.terminfo
#
# Usage:
#
# export TERM=xterm-256color
#
xterm-256color|xterm with 256 colors and italic,
sitm=\E[3m, ritm=\E[23m,
use=xterm-256color,
# A tmux-256color based TERMINFO that adds the escape sequences for italic.
#
# Install:
#
# tic tmux-256color.terminfo
#
# Usage:
#
# export TERM=tmux-256color
#
tmux-256color|tmux with 256 colors and italic,
sitm=\E[3m, ritm=\E[23m,
use=screen-256color,
sitm
eritm
sequências em ambos osTERM
s:sitm=\E[3m
ritm=\E[23m
- vimscript para itálico:
if $TERM =~# '\v(xterm|tmux)-256color' || has('gui_running')
if has('osx')
let &t_ZH = "\e[3m"
let &t_ZR = "\e[23m"
endif
endif
Espero que menos esteja usando smso, não sitm. Você derivou tmux-256color de screen-256color que tem smso definido como SGR 3:
Isso significa que você obterá itálico dentro do tmux. A razão pela qual smso é SGR 3 em tela-256 cores é que a tela não suporta itálico e usa SGR 3 para inverso (acho que isso pode ter mudado agora, mas não tenho certeza).
xterm-256color, no entanto, tem smso definido como SGR 7:
Isso significa que você obterá destaque (inverso) fora do tmux.
Portanto, para corrigir isso, modifique suas entradas terminfo para definir smso consistentemente para o que você preferir (itálico ou inverso) para xterm-256color e tmux-256color.
Presumo que você já tenha isso, pois o itálico está funcionando no tmux, mas certifique-se de ter o terminal padrão definido como tmux-256color em .tmux.conf ou o tmux irá emular a tela e enviar smso em vez de sitm para itálico.
Use a opção
-r
(--raw-control-chars
) ou-R
(--RAW-CONTROL-CHARS
) deless
para fazê-lo interpretar caracteres especiais em vez de escapá-los.-R
deve apenas interpretar\E[...m
sequências, enquanto-r
interpreta tudo.Para ativar a opção sempre, defina a variável env
$LESS
como-R
.