Sin resaltado de sintaxis en tmux

16

He instalado tmuxen iTerm 2. (Build 3.0.13) Cuando ejecuto vimen tmux, resaltado de sintaxis es similar al siguiente.

sin resaltado de sintaxis

Pero fuera de tmux, el resaltado de sintaxis se ve bien.

resaltado de sintaxis ordinaria

Mi $TERMinterior y exterior es tmux xterm-256color. También agregué

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

en .tmux.confy agregó esto

set t_Co=256
set t_AB=m
set t_AF=m
if &term =~ '256color'
    set t_ut=
endif

en .vimrc.

También probé el tmux -2comando y leí estas preguntas.

perder vim colorscheme en modo tmux

Colores incorrectos con vim en iTerm2 usando Solarized

¿Es un problema de tmux, vimo la configuración de mi?

EDITAR:

Mi .vimrcen GitHub Gist

https://gist.github.com/sohnryang/3c63397f332f2e30c7d7b2a83c3c9f52

Sohnryang
fuente
¿Qué pasará cuando se inicia el tmux con -2la opción: tmux -2. Preferiblemente cuando no hay sesiones en tmux.
grodzik
Solía tmux -2, pero el problema es el mismo.
sohnryang
¿Podrías compartir todo .vimrc?
grodzik
1
@sohnryang, ¿qué parte de "tal vez no deberías" no entiendes?
muru
1
Intenta seguir estos pasos . Tienes muchos complementos, por lo que quizás uno de ellos interfiera.
Martin Tournoij

Respuestas:

8

Bueno, resolví el problema yo solo.

como comentó @ Carpetsmoker ♦, comencé a sospechar que mi .vimrces un problema. Leí esta pregunta y comencé vim con este comando dentro de tmux.

vim -u NONE -U NONE -N ~/.vimrc

Después de iniciar vim con el comando anterior, ejecuté este comando dentro de vim.

:syn on
:colorscheme solarized8_dark

Estos resaltaron mi .vimrcarchivo. Entonces, comencé a depurar mi .vimrc.

Larga historia corta, set termguicolorsera el problema. Si ejecuté vim con set termguicolorscomentado en .vimrc, pude ver resaltado de sintaxis corregida en tmux.

Sohnryang
fuente
Tuve el mismo problema. sería genial termguicolorstrabajar en tmux
Filype
4

Del manual de vim: :h termguicolorsrecomienda leer:h xterm-true-color

Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
and |t_8b| options explicitly.  [ ... these are]  only set [to some default] when `$TERM` is `xterm`.

Yo uso una condición similar a la siguiente:

if &term =~# '256color' && ( &term =~# '^screen'  || &term =~# '^tmux' )
    let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
    let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
    set termguicolors
endif
ixil
fuente
3

De hecho, lo hice funcionar bien termguicolors. Esto es lo que hice 1. en mi ~ / .bash_profile puse esto:

export TERM=xterm-256color

y dentro de mi ~ / .vimrc tuve esto

syntax enable
colorscheme Spacegray

set termguicolors

y funcionó perfectamente! referencia

abbood
fuente
: syn on: colorscheme Spacegray: set termguicolors
abbood