втратити схему кольорів vim у режимі tmux


228

Я запускаю iterm2, і коли я перебуваю в режимі tmux, кольорова схема, яку я встановила в vim, не з’являється. Тільки колірну гамму, яку я встановила в iterm. Якщо я запускаю vim з оболонки, то схема кольорів виявляється правильною - це лише тоді, коли я перебуваю в режимі tmux.

Я спробував встановити, :colorscheme molokaiколи in vim (див. Скріншот нижче), і він не змінюється - знову ж таки, схема кольорів за замовчуванням для iterm2 залишається.

Я пропускаю якесь налаштування на iterm чи tmux.conf? Мої dotfles тут на Github.


31
Що відбувається, коли ти робиш $ tmux -2?
romainl

4
Це було абсолютно все. Що прапор -2?
tristen

11
Це змушує tmux працювати з 256 кольорами.
romainl

Відповіді:


252

У мене була така ж проблема. Тільки різницею було те, що я solarizeскоріше використовую molokai.

Щоб вирішити проблему, я створив псевдонім у ~/.bashrc:

alias tmux="TERM=screen-256color-bce tmux"

І встановіть default-terminalопцію в ~/.tmux.conf:

set -g default-terminal "xterm"

Нарешті, зробіть $ source ~/.bashrcдля завантаження нових псевдонімів.


20
Я використовую це замість цього, tmux -2оскільки це більш багатослівний.
thameera

97
Особисто мені довелося використовувати set -g default-terminal "screen-256color"для роботи, а не xtermнад OS X, що перекинувся в коробку Ubuntu. Я посилався на цей сайт: rhnh.net/2011/08/20/vim-and-tmux-on-osx
waffl

7
Псевдонім тут не має сенсу: він робить вигляд, що tmux працює над екраном або tmux, що навряд чи буває так. Щоб сказати tmux припускати, що термінал, на якому він працює, підтримує 256 кольорів, запустіть tmux -2або tmux -2 attach(tmux вирішує кожен раз, коли ви додаєте новий або існуючий сеанс до терміналу). Розумний псевдонім був би alias tmux='tmux -2'. Дивитися також підтримку кольорів tmux, TERM та 256
Жил "SO- перестаньте бути злим"

3
Я читав в якійсь іншій відповіді (не міг знайти посилання), що не вдало застосовувати термін, хоча я не знаю точно. Починаючи зtmux -2 варіант із set -g default-terminal "screen-256color"відпрацьованим для мене, це буде моїм вибором. Але все-таки спасибі!
marcelocra

5
Якщо .tmux.confналаштування не видає чинності, закрийте всі процеси tmux та перезапустіть. Ви можете просто зробити це, set -g default-terminal "screen-256color"не встановлюючи жодного псевдоніма в .bashrc. Я думаю, що люди роблять обхідні шляхи, як псевдонім змінної середовища, оскільки вони не закривають усі процеси tmux після налаштування .tmux.conf.
Шев

74

Як згадує @romainl вище, мені потрібно було змусити tmux використовувати 256 кольорів, додавши -2прапор:

$ tmux -2

Я додав alias tmux='tmux -2'до свого bash_profile, тож я не забуваю :)


Насправді, це зовсім не обов'язково: я не використовую, -2але у мене в Vim в tmux працює 256 кольорів.
romainl

@romainl Це необхідно, якщо tmux не визначить ваш термінал як 256 кольорів, що досить часто.
Жил 'ТАК - перестань бути злим'

1
@Gilles, Vim не виявляє, що термінал підтримує 256 кольорів, оскільки типовим TERMє tmux screen. -2не змінюється TERMі не змінює нічого, що стосується кольору, до того, яку інформацію отримує Vim із свого оточення: :echo &t_Coвсе одно повертається 8. З даною інформацією, Вім робить все правильно. Єдині речі , які повинні бути встановлені в 1. Ваш термінал емулятора TERMдо xterm-256colorабо еквівалентну значення , як urxvt-unicode-256colorі по замовчуванням 2. tmux в TERMс set -g default-terminal "screen-256color".
romainl

@romainl У більшості середовищ TERMвстановлено xterm, що це не так xterm-256color, отже, потрібно запускати tmux -2( TERM=xterm-256color tmuxабо змінювати термінкап або інші способи досягнення того ж самого).
Жил "ТАК - перестань бути злим"

1
@Gilles, проблема полягає в тому, що -2 не робить нічого, що впливає на поведінку Vim щодо 256-кольорової підтримки, оскільки єдине, що важливо для Vim, - це ТЕРМ і це потрібно встановити в кінці ланцюга: у вашому термінальний емулятор Якщо у вас SSH через 5 хостів і ваш термінал встановлений правильно, Vim, запущений на 5-му хості, побачить ваші 256 кольорів TERM і діятиме відповідно. Якщо ви використовуєте tmux в будь-якій точці ланцюга -2, це матиме нульовий вплив на поведінку Vim, тому що все, що він бачить, є його середовищем, обмеженим 8 кольорами через стандартний термін tmux: екран, -2 чи ні.
romainl

72

Я спробував усі рішення вище, і те, що нарешті спрацювало для мене, - це введення наступних рядків .tmux.conf:

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

Я використовую tmux через SSH, і це теж те, що працювало для мене, хоча я не використовую xterm, а просто звичайний SSH.
armen.shimoon

Я не використовував його через ssh, і це була єдина відповідь, яка працювала на мене. Місцевий сеанс iTerm в OSX 10.9.5.
Шев

Це працює для мене (MacOS Mojave + iTerm2 / Alacritty), дякую
Адріан Магдас

31

Я щойно виявив, чому в мене багато плутанини. Мені, як і іншим тут, важко було набути чинності налаштування терміналу за замовчуванням. Я згадав, що у мене був тмукс-сеанс на задньому плані. Я повторно долучив сеанс, закрив свої процеси та закрив ВСІ процеси tmux. Наступного разу, коли я перезапустив tmux, налаштування терміналу за замовчуванням у вступіло в .tmux.confсилу. Я не знаю, чи роблять це теж інші, але рекомендую закрити всі процеси tmux, перш ніж змінювати.tmux.conf файлу.

У мене налаштування працювати на моїй локальній машині (OSX 10.9.5 з iTerm2) без будь-яких змін до .bashrcабо .bash_profile. Все, що я зробив, це додати рядок set -g default-terminal "xterm-256color"до~/.tmux.conf та перезапустити всі процеси tmux.

У мене було віддалене налаштування (ssh на Ubuntu 14.04), щоб працювати точно так само без будь-яких модифікацій .bashrc. Я просто додав set -g default-terminal "xterm-256color"до ~/.tmux.confмене на віддаленій машині і перезапустити всі процеси віддалених tmux.

Ви можете перевірити, що Vim бачить, виконуючи echo $TERMпротягом сеансу tmux. Він продовжував говорити screenяк значення, поки я не перезапустив усі процеси tmux, і в цей момент він відобразився xterm-256colorяк очікувалося.

Сподіваюся, що це допомагає.


1
З цього посту я підтвердив ще кілька операційних систем, закривши всі процеси і налаштувавши default-terminalопцію .tmux.conf, працював 100% часу до цих пір.
Шев

2
я також! я би витратив на це менше часу, якби ця відповідь була далі.
Зігфрід

21

Тож це трохи на черговій стороні, але, можливо, варто згадати, що використання екрана часто порушує клавіші Home та End. Використання

export TERM="xterm-256color"

в повинен зберігати функціональність цих систем і дозволяти кольоровій гамі (або лінії електропередач) нормально працювати.


Дякуємо, що вказали на це. Я цього не знав. Це все ще здається, що він працює для Debian Derv від того, що я бачив досі. На мій захист пост посилався на OSX.
Jpatrick

tmux 1.9a, OSX 10.9.2, iTerm2 Build 1.0.0.20130622 експортувати TERM = "xterm-256color" у .bash_profile, потім встановити iterm на xterm-256-кольоровий, працюючий для мене. Не потрібно встановлювати будь-яку конфігурацію tmux.
агентство

14

Мені потрібен vim, щоб правильно відобразити tmux в терміналі на ubuntu та cygwin / mintty на windows. Я змусив його працювати, комбінуючи відповіді, як це.

В .bashrc:

alias tmux="tmux -2"

В .vimrc:

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

ґрунтуючись на відповідях на це запитання, цій вікі-сторінці Vim та цьому блоковому курсорі


У мене виникла проблема з м'ятою, і додавання конфігурації vim виправило мене. Мені навіть не потрібно було робити tmuxпсевдоніму.
тригоман

@trigoman, те ж саме для мене, я просто повинен був оновити .vimrc.
Масуд Алам

Я спробував усі попередні пропозиції. Щойно додано set t_Co=256до .vimrc і це було виправлено. Мені не потрібно було створювати tmuxпсевдонім.
Майк

11

Я спробував усі наведені вище інструкції, і я виявив, що найважливіше - я повинен явно додати наступний рядок у свій .bashrc файл.

export TERM=screen-256color

Я не знаю, чому псевдонім tmux = "TERM = screen-256color-bce tmux" не виходить. Я використовую Sierra 10.12.1.


Це те, що працювало для мене. Просто звичайний експорт терміна. +1
markovchain

10

Якщо комусь потрібна 24-бітна підтримка кольорів:

Tmux підтримує 24-бітний колір, як у версії 2.2. Якщо ваш термінал підтримує 24-бітний колір, додайте свій термінал до налаштування перекриття терміналу. Наприклад,

set -ga terminal-overrides ",xterm-256color:Tc"

Мій контрольний список навколишнього середовища:

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14 (Тип терміналу звіту є xterm-256color)
  • neovim 0.1.7 (Увімкніть 24-бітний колір, додавши: xterm-256colorдо.vimrc )
  • tmux 2.3 (Додати set -ga terminal-overrides ",xterm-256color:Tc"до .tmux.conf)

Більше нічого мені не потрібно додавати .bashrcабо .zshrc.

Сподіваюся, це може допомогти.


єдине, що працювало на мене. що саме це робить?
волк

6

Оскільки це перший результат в Google, і оскільки жодне з перерахованого вище не допомогло. Хотілося опублікувати це, щоб хтось міг вважати це корисним

в .vimrc:

set background=dark
set t_Co=256

HTH


Випробували ці дві лінії, і вони добре працюють для мого Vim на WSL-Windows10.
llinfeng

1
Дуже дякую. Це працювало на Ubuntu 18 з gnome-терміналом
Roymunson

4

Додавши наступний рядок у .tmux.conf працював для мене з macOS Sierra 10.12.6,

встановити -g за замовчуванням-термінал "screen-256color"


Те ж саме. Дякую @waffl, що знайшли це рішення!
Адам Еріксон

3

Якщо ви опинилися в тій самій ситації, що і я, що ніщо з вищезгаданого не спрацювало. Спробуйте це:

в .tmux.conf:

set -g default-terminal "xterm"

в bash config (можливо .bashrcабо .bash_profile):

alias tmux="tmux -2"

а потім запустіть:

killall tmux

а потім відновити tmux


3

Якщо ви використовуєте tmuxinatorабо mux, вам потрібно буде додати їх в .bashrcабо .zshrc:

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

Ці сили змушують використовувати 256-кольорові в терміналі.

Тоді tmux, tmuxinatorі muxкоманда буде все працювати.


2

Для того, щоб налаштувати правильний колір та позбутися від проблеми візуалізації в Ubuntu та Mac:

Перевір це


2

Просто довелося впоратися з цією проблемою, і хоча всі опубліковані раніше відповіді були корисними, вони не вирішили питання в моєму випадку.

Мою проблему виправили, видаливши наступний рядок у моєму .vimrc:

set termguicolors

який все-таки був доповнений іншою інструкцією.

Тепер із наступним рядком, знайденим у попередніх мовниках у моєму .tmux.conf:

export TERM="screen-256color"

все приємно і барвисто.


2

Я видалив лінію set termguicolors, але вона не працює. Встановлення set notermguicolorsзамість цього у .vimrcтворах.


1

Із сторінки tmux man додавши прапор таким чином:

tmux -2

Цей -2прапор змушує tmux працювати в 256-кольоровому режимі.

Це працює для мене


1

Мені не вистачало удачі, намагаючись експортувати інший TERMабо встановити термінал за замовчуванням в моєму .tmux.conf.

Моє рішення для виправлення кольорів vim у tmux було додавання цього рядка до .tmux.conf:

set -g terminal-overrides 'xterm:colors=88'

Я не впевнений, чому це переоцінка була потрібна, враховуючи, що мій TERM=xtermі у мене iTerm також встановлений на xterm, але, здається, це працює.


0

Я використовую Ubuntu bionic 18.04.4 LTS і tmux 2.6. У мене є те саме питання, і його можна вирішити, просто додавши це до .bashrc

export TERM=screen-256color

І звичайно, не забудьте джерело. source ~/.bashrc

Або просто перезавантажте свій тимчасовий

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.