втратити схему кольорів 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.