Середовище:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- Термінал GNOME 3.22.1 Використання VTE версії 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (2016 р. 12 вересня, складено 22 лютого 2017 р. 16:26:11)
- tmux 2.2
Нещодавно я почав використовувати tmux і помітив, що кольори у Vim змінюються залежно від того, біжу я всередині або поза tmux. Нижче наведені скріншоти Vim зовні (зліва) та всередині (праворуч) від tmux під час перегляду Git diff:
Моя TERMзмінна -
- Поза tmux:
xterm-256color - Всередині tmux:
screen-256color
Vim повідомляє про такі типи терміналів, як очікувалося (через :set term?):
- Поза tmux:
term=xterm-256color - Всередині tmux:
term=screen-256color
Vim також повідомляє, що обидва екземпляри працюють у 256-кольоровому режимі (через :set t_Co?):
- Поза tmux:
t_Co=256 - Всередині tmux:
t_Co=256
Існує багато подібних питань щодо того, щоб Vim запустився в 256-кольоровому режимі всередині tmux (найкраща відповідь, яку я знайшов, тут ), але я не думаю, що це моя проблема з огляду на вищевказану інформацію.
Я можу дублювати проблему поза tmux, якщо запускаю Vim з типом терміналу, встановленим на screen-256color:
$ TERM=screen-256color vim
Тому я змушую вважати, що між можливостями xterm-256colorта screen-256colorтерміналами просто є якась різниця, яка спричиняє різницю в кольорі. Що призводить до питання, поставленого в заголовку: що конкретно в можливостях термінала призводить до того, що кольори Vim відрізняються? Я бачу відмінності між запуском :set termcapвсередині і зовні tmux, але мені цікаво, які змінні насправді викликають різницю в поведінці.
Незалежно від попереднього питання, чи можна, щоб кольори Vim були стійкими під час роботи всередині або поза tmux? Деякі речі, які я спробував, включають:
- Явне встановлення терміналу за замовчуванням використовує tmux
~/.tmux.confдля різних значень (деякі проти порад FAQ tmux FAQ ):
встановити -g за замовчуванням-термінал "screen-256color"
встановити -g за замовчуванням-термінал "xterm-256color"
встановити -g за замовчуванням-термінал "screen.xterm-256color"
встановити -g за замовчуванням-термінал "tmux-256color"
- Початок використання tmux
tmux -2.
У всіх випадках Vim продовжував відображати різні кольори всередині tmux.
xterm-256colorверсії (пошук у файлі "38; 5;"), але не можна в screen-256color. Наприклад , там , де є \e[38;5;81mв xterm-256color(колір # 81 з 256-кольорової палітри, середній блакитний відтінок), screen-256colorмістить \e[34mзамість цього (стандартний синій колір 8-колірної гами). Тому головне питання, чому vim не використовує 256-кольорову палітру у випадку TERM=screen-256color.
xterm-256colorздається, версія друкує екран двічі, спочатку із застарілими кольорами, а потім із 256-кольоровою палітрою. Шукайте, наприклад, "F1" у файлі, ви знайдете дві збіги xterm-256color, перше з \e[34mкольором, друге з \e[38;5;81m. Я не знаю, що тут відбувається.
set -g default-terminal "screen.xterm-256color"в ~/.tmux.confі перезавантажити конфігурації в tmux (<Cs>: джерело-файл ~ / .tmux.conf) працював для мене (питання виділення). thx


script, запуститиvim, вийти,vimа потім вийтиscriptз оболонки та приєднати отриманийtypescriptфайл? Потім повторіть ті самі кроки, якTERM=screen-256color vimзамість цього.