Нет подсветки синтаксиса в tmux


16

Я установил tmuxв iTerm 2. (Сборка 3.0.13) Когда я выполняю vimв tmux, подсветка синтаксиса выглядит следующим образом.

нет подсветки синтаксиса

Но вне tmux подсветка синтаксиса выглядит нормально.

обычная подсветка синтаксиса

Мой $TERMвнутри и снаружи Tmux есть xterm-256color. Я также добавил

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

в .tmux.confи добавил это

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

в .vimrc.

Я также попробовал tmux -2команду и прочитал эти вопросы.

потерять vim colorscheme в режиме tmux

Неправильные цвета с vim в iTerm2 с использованием Solarized

Является ли это проблемой tmux, vimили моей конфигурации?

РЕДАКТИРОВАТЬ:

Мой .vimrcв GitHub Gist

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


Что произойдет , когда вы начнете tmux с -2опцией: tmux -2. Желательно, когда в tmux нет сессий.
grodzik 22.12.16

Я использовал tmux -2, но проблема та же.
sohnryang

Не могли бы вы поделиться целым .vimrc?
grodzik 22.12.16

1
@sohnryang, что часть "может быть, вы не должны", вы не понимаете?
Муру

1
Попробуйте выполнить следующие действия . У вас есть много плагинов, так что, возможно, один из них мешает.
Мартин Турной

Ответы:


8

Ну, я решил проблему самостоятельно.

как прокомментировал @ Carpetsmoker ♦, я начал подозревать, что моя .vimrcпроблема. Я прочитал этот вопрос и начал vim с этой командой внутри tmux.

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

После запуска vim с помощью команды выше, я запустил эту команду внутри vim.

:syn on
:colorscheme solarized8_dark

Этим выделен мой .vimrcфайл. Итак, я начал отлаживать свой .vimrc.

Короче говоря, set termguicolorsбыла проблема. Если я запускаю vim с set termguicolorsкомментарием .vimrc, я могу увидеть исправленную подсветку синтаксиса в tmux.


Я была такая же проблема. было бы здорово начать termguicolorsработать над tmux
Filype

4

Из руководства vim: :h termguicolorsрекомендует к прочтению: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`.

Я использую условие, подобное приведенному ниже:

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

3

Я на самом деле заставил это нормально работать termguicolors. Это то, что я сделал 1. в своем ~ / .bash_profile я положил это:

export TERM=xterm-256color

и внутри моего ~ / .vimrc у меня было это

syntax enable
colorscheme Spacegray

set termguicolors

и это сработало отлично! ссылка


: syn on: colorscheme Spacegray: набор termguicolors
abbood
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.