Lingkungan Hidup:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- Terminal GNOME 3.22.1 Menggunakan VTE versi 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (2016 Sep 12, disusun 22 Feb 2017 16:26:11)
- tmux 2.2
Saya baru-baru ini mulai menggunakan tmux dan telah mengamati bahwa warna dalam Vim berubah tergantung pada apakah saya menjalankan di dalam atau di luar tmux. Di bawah ini adalah screenshot Vim di luar (kiri) dan di dalam (kanan) dari tmux saat melihat Git diff:
TERM
Variabel saya adalah
- Di luar tmux:
xterm-256color
- Di dalam tmux:
screen-256color
Vim melaporkan jenis terminal ini seperti yang diharapkan (via :set term?
):
- Di luar tmux:
term=xterm-256color
- Di dalam tmux:
term=screen-256color
Vim juga melaporkan kedua instance berjalan dalam mode 256-warna (via :set t_Co?
):
- Di luar tmux:
t_Co=256
- Di dalam tmux:
t_Co=256
Ada banyak pertanyaan serupa di luar sana mengenai bagaimana menjalankan Vim dalam mode 256-warna di dalam tmux (jawaban terbaik yang saya temukan ada di sini ), tetapi saya tidak berpikir itu masalah saya mengingat informasi di atas.
Saya dapat menduplikasi masalah di luar tmux jika saya menjalankan Vim dengan tipe terminal yang diatur ke screen-256color
:
$ TERM=screen-256color vim
Jadi itu membuat saya percaya ada beberapa perbedaan antara kemampuan terminal xterm-256color
dan screen-256color
yang menyebabkan perbedaan warna. Yang mengarah ke pertanyaan yang diajukan dalam judul: apa yang secara khusus dalam kemampuan terminal menyebabkan warna Vim menjadi berbeda? Saya melihat perbedaan antara menjalankan :set termcap
di dalam dan di luar tmux, tapi saya ingin tahu variabel mana yang sebenarnya menyebabkan perbedaan perilaku.
Terlepas dari pertanyaan sebelumnya, mungkinkah warna Vim konsisten saat berjalan di dalam atau di luar tmux? Beberapa hal yang saya coba antara lain:
- Secara eksplisit mengatur terminal default yang digunakan tmux
~/.tmux.conf
ke berbagai nilai (beberapa bertentangan dengan saran dari FAQ tmux ):
set -g default-terminal "screen-256color" set -g default-terminal "xterm-256color" set -g default-terminal "screen.xterm-256color" set -g default-terminal "tmux-256color"
- Mulai tmux menggunakan
tmux -2
.
Dalam semua kasus, Vim terus menampilkan berbagai warna di dalam tmux.
script
, memulaivim
, keluarvim
dan kemudian keluarscript
dari shell, dan lampirkantypescript
file yang dihasilkan ? Kemudian ulangi langkah yang samaTERM=screen-256color vim
sebagai gantinya.xterm-256color
versi (mencari "38; 5;" dalam file), tetapi tidak dapat dalamscreen-256color
. Misalnya dimanapun ada\e[38;5;81m
dalamxterm-256color
(warna # 81 dari palet 256-warna, warna biru tengah),screen-256color
berisi\e[34m
(standar biru dari palet 8-warna). Jadi pertanyaan utamanya adalah mengapa vim tidak menggunakan palet 256-warna jika adaTERM=screen-256color
.xterm-256color
versi tersebut tampaknya mencetak layar dua kali, pertama dengan warna legacy dan kemudian dengan palet 256 warna. Cari misalnya "F1" dalam file, Anda akan menemukan dua kecocokanxterm-256color
, yang pertama dengan\e[34m
warna, yang kedua dengan\e[38;5;81m
. Saya tidak tahu apa yang terjadi di sini.set -g default-terminal "screen.xterm-256color"
di~/.tmux.conf
dan reload config di tmux (<Cs>: sumber-berkas ~ / .tmux.conf) bekerja untuk saya (masalah sorot). thxJawaban:
tmux
tidak mendukung kemampuan terminfobce
(penghapusan warna belakang), yangvim
memeriksa, untuk memutuskan apakah akan menggunakan skema "warna default".Karakteristik
tmux
itu telah disebutkan beberapa kali -sumber
Saya memiliki masalah serupa sebelumnya. Komentar dengan warna biru di Vim sulit dibaca. Di
.tmux.conf
saya atur ini:Dan di
.vimrc
:Sekarang tampilannya sebagai berikut dan berfungsi baik di Terminal Gnome dan Cygwin:
sumber
bg=dark
di vimrc saya memperbaikinya.$TERM
baik di dalam maupun di luartmux
saya"xterm-256color"
dan secara eksplisit menetapkan backgroun melakukannya untuk saya juga. Terima kasih!stterm
karena dalamxfce4-terminal
segala sesuatu tampak nyaman (komentar muncul dicyan
bukannyablue
yang sangat sulit untuk membaca dengan latar belakang gelap). setelah perubahan ini semuanya bekerja dengan baik. Tapi ingat untuk menambahkanunlet! skip_defaults_vim source $VIMRUNTIME/defaults.vim
file vimrc untuk menggunakan penyorotan sintaks dll ...Berkat analisis @ egmont tentang warna apa yang dikeluarkan Vim saat itu
TERM=screen-256color
, saya terinspirasi untuk melihat skema warna yang digunakan Vim dalam dua skenario.Vim melaporkan menggunakan
default
skema warna dalam kedua kasus. Saya pikir itu aneh karenadefault
skema warna pada Fedora 25 (/usr/share/vim/vim80/colors/default.vim
) tampaknya tidak cocok dengan warna yang sebenarnya saya lihat saat ituTERM=xterm-256color
. Jika saya secara eksplisit mengatur skema warna menggunakan:colorscheme default
saatTERM=xterm-256color
, penampilan Vim berubah ke saat ituTERM=screen-256color
. Untuk mendapatkan warna kembali seperti semula ketika saya memulai Vim, saya harus menggunakanron
skema warna. Kemajuan!Saya menemukan jawaban Tanya Ubuntu yang menunjukkan bahwa ketika Vim melaporkannya menggunakan
default
skema warna, itu tidak selalu berartidefault.vim
melainkan beberapa skema warna tema-spesifik. Seperti jawabannya, tema gelap (yang saya gunakan) berhubungan denganron
skema warna, seperti yang saya temukan di atas. (Meskipun postingan ini berkenaan dengan Ubuntu, saya berasumsi OP menggunakan GNOME.)Saya juga menemukan pertanyaan lain yang sepertinya menggambarkan masalah yang sama yang saya alami. Saya menemukan itu ketika mencari sebelum saya memposting pertanyaan ini, tetapi, untuk beberapa alasan, skema warna tidak menurut saya relevan.
Saya akhirnya melakukan apa yang @LapshinDmitry lakukan dalam jawabannya dan secara eksplisit mengatur file
colorscheme ron
saya~/.vimrc
. Sekarang, apakah saya memulai Vim di dalam atau di luar tmux, warnanya tampak sama. Satu-satunya kelemahan adalah jika saya pernah mengubah tema desktop saya dari rasa gelap ke rasa terang, Vim tidak akan secara otomatis beralih ke skema warna tema cahaya "default", yang tampaknyapeachpuff
. Saya bisa hidup dengan itu, karena saya tidak mungkin mengubah tema saya.Saya tidak akan menerima jawaban ini karena saya mempertimbangkan pengaturan skema warna secara eksplisit dalam
~/.vimrc
solusi daripada solusi. Jika seseorang dapat menjelaskan mengapa Vim memuat skema warna "default" yang berbeda tergantung pada nilainyaTERM
, saya akan dengan senang hati menerima jawaban itu, karena saya lebih tertarik untuk memahami akar permasalahan. Saya menduga itu ada hubungannya dengan bagaimana Vim mengartikan kemampuan terminal antara dua file terminfo.sumber
vim
berperilaku seperti ini. Lagipula,bce
kemampuan itu seharusnya tidak ada hubungannya dengan jumlah warna yang tersedia.bce
kemampuan terminal, 2) jika ada, pilih skema warna "A", 3) jika tidak, pilih skema warna "B". Saya percaya kedalaman warna sama dalam kedua kasus (yaitu 256 warna, seperti yangt_Co
ditunjukkan). Hanya saja skema warna "B" di sistem saya kebetulan hanya menggunakan palet 8-warna meskipun 256 warna mungkin (saya pikir itu menjelaskan apa yang Anda amati dalam analisis naskah Anda; perbaiki saya jika saya salah). Ingat, setelah saya berlari:colorscheme ron
, saya melihat urutan melarikan diri 256-warna dalam sesi Vim yang sama.vim
memiliki keputusan desain yang sangat aneh.Itu benar dan bekerja untuk saya. Cobalah dengan terminal yang berbeda (saya menggunakan urxvt) untuk melihat apakah Gnome Terminal adalah masalahnya.
Juga periksa
COLORTERM
(milik saya diatur kerxvt
) danunset TERMCAP
.sumber
TERM
adalahrxvt-unicode-256color
) menggunakan sesuai~/.Xdefaults
dan sayangnya masih mengamati warna yang berbeda di dalam dan di luar tmux. Untuk skenario gnome-terminal,COLORTERM
istruecolor
danTERMCAP
isinya kosong di dalam dan di luar tmux. Untuk skenario urxvt,COLORTERM
berada dirxvt-xpm
luar dantruecolor
di dalam tmux, sementaraTERMCAP
kosong di dalam dan di luar tmux.:help xterm-true-color
atau coba dengan konfigurasi Vim yang lebih standar.termguicolors
dalam.vimrc
dan:set termguicolors?
laporan sayanotermguicolors
dalam kedua kasus. Saya akan melihat topik bantuan yang Anda referensikan; Terima kasih!Untuk referensi saya sendiri nanti ketika saya tidak diragukan lagi google ini mengatur mesin saya berikutnya.
Gunakan instruksi ini untuk mendapatkan binari dan DLL yang diperlukan ke dalam PATH Git bash:
https://blog.pjsen.eu/?p=440
Gunakan perintah ini untuk mengonfigurasi:
sumber