Tidak ada penyorotan sintaks di tmux

16

Saya telah menginstal tmuxdi iTerm 2. (Build 3.0.13) Ketika saya jalankan vimdi tmux, sintaks terlihat seperti ini.

tidak ada penyorotan sintaksis

Tapi di luar tmux, penyorotan sintaks terlihat bagus.

penyorotan sintaksis biasa

Saya $TERMdi dalam dan di luar tmux adalah xterm-256color. Saya juga menambahkan

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

di .tmux.confdan menambahkan ini

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

di .vimrc.

Saya juga mencoba tmux -2perintah dan membaca pertanyaan-pertanyaan ini.

kehilangan vim colorscheme dalam mode tmux

Warna yang salah dengan vim di iTerm2 menggunakan Solarized

Apakah ini masalah tmux, vimatau konfigurasi saya?

EDIT:

My .vimrcin GitHub Gist

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

sohnryang
sumber
Apa yang akan terjadi ketika Anda mulai tmux Anda dengan -2pilihan: tmux -2. Lebih disukai bila tidak ada sesi dalam tmux.
grodzik
Saya menggunakan tmux -2, tetapi masalahnya sama.
sohnryang
Bisakah Anda berbagi secara keseluruhan .vimrc?
grodzik
1
@sohnryang bagian mana dari "mungkin kamu seharusnya tidak" yang tidak kamu mengerti?
muru
1
Coba ikuti langkah-langkah ini . Anda memiliki banyak plugin, jadi mungkin salah satunya mengganggu.
Martin Tournoij

Jawaban:

8

Yah, saya memecahkan masalah sendiri.

seperti yang dikomentari @ Carpetsmoker, saya mulai curiga bahwa .vimrcmasalah saya. Saya membaca pertanyaan ini dan memulai vim dengan perintah ini di dalam tmux.

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

Setelah memulai vim dengan perintah di atas, saya menjalankan perintah ini di dalam vim.

:syn on
:colorscheme solarized8_dark

Ini menyoroti .vimrcfile saya . Jadi, saya mulai men-debug saya .vimrc.

Singkatnya, set termguicolorsmasalahnya. Jika saya menjalankan vim dengan set termguicolorsberkomentar .vimrc, saya bisa melihat sorotan sintaks yang diperbaiki di tmux.

sohnryang
sumber
Saya memiliki masalah yang sama. akan lebih baik untuk mulai termguicolorsbekerja di tmux
Filype
4

Dari manual vim: :h termguicolorsmerekomendasikan membaca: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`.

Saya menggunakan kondisi yang mirip dengan di bawah ini:

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
sumber
3

Saya benar-benar membuatnya bekerja dengan baik termguicolors. Inilah yang saya lakukan 1. di ~ / .bash_profile saya taruh ini:

export TERM=xterm-256color

dan di dalam ~ / .vimrc saya punya ini

syntax enable
colorscheme Spacegray

set termguicolors

dan itu bekerja dengan sempurna! referensi

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