tmux मोड में vim colorcheme खो दें


228

मैं iterm2 चला रहा हूं और जब मैं tmux मोड में हूं तो मेरे द्वारा सेट किया गया colorcheme शो नहीं करता है। केवल रंग योजना जो मैंने इटर्मा में सेट की है। यदि मैं शेल से विम चलाता हूं, तो colorcheme सही दिखाई देता है - इसका केवल तभी जब मैं tmux मोड में हूं।

मैंने सेटिंग की कोशिश की है :colorscheme molokaiजब vim में (नीचे स्क्रीनशॉट देखें) और यह नहीं बदलता है - फिर से, iterm2 के लिए डिफ़ॉल्ट colorcheme रहता है।

क्या मुझे iterm या tmux.conf में कुछ सेटिंग याद आ रही है? मेरे डॉटफल्स यहाँ github पर हैं।


31
जब आप करते हैं तो क्या होता है $ tmux -2?
रोमेनिल

4
यह पूरी तरह से था। -2 झंडा क्या है?
ट्रिस्टन

11
यह tmux को 256 रंगों के साथ काम करने के लिए मजबूर करता है।
रोमेनिल

जवाबों:


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क्योंकि यह अधिक क्रिया है।
थमेरा

97
व्यक्तिगत रूप से मुझे ओएस एक्स पर set -g default-terminal "screen-256color"काम करने के बजाय xtermएक उबंटू बॉक्स में भेज दिया गया था। मैंने इस साइट का उल्लेख किया: 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", वह मेरी पसंद होगी। लेकिन फिर भी धन्यवाद!
मार्सेलोकरा

5
यदि .tmux.confसेटिंग प्रभावी नहीं दिखती है, तो सभी tmux प्रक्रियाओं को बंद करें और पुनरारंभ करें। आप बस set -g default-terminal "screen-256color"किसी भी अन्य में स्थापित किए बिना कर सकते हैं .bashrc। मुझे लगता है कि लोग पर्यावरण चर उर्फ ​​की तरह वर्कअराउंड कर रहे हैं क्योंकि वे कॉन्फ़िगर करने के बाद सभी tmux प्रक्रियाओं को बंद नहीं कर रहे हैं .tmux.conf
Chev

74

जैसा कि @romainl ऊपर उल्लेख करता है, मुझे -2झंडे जोड़कर tmux को 256 रंगों का उपयोग करने के लिए मजबूर करने की आवश्यकता थी :

$ tmux -2

मैंने alias tmux='tmux -2'अपने bash_profile में जोड़ा , इसलिए, मैं नहीं भूलता :)


वास्तव में, यह बिल्कुल भी अनिवार्य नहीं है: मैं उपयोग -2नहीं करता हूं, लेकिन मेरे पास 256 रंगों में tmux में काम करने वाले रंग हैं।
रोमेनियल

@romainl यह आवश्यक है अगर tmux 256 टर्मिनल के रूप में आपके टर्मिनल का पता नहीं लगाता है, जो काफी सामान्य है।
गिल्स एसओ- बुराई को रोकें '

1
@ गिल्स, विम का पता नहीं है कि टर्मिनल 256 रंगों का समर्थन करता है क्योंकि tmux का डिफ़ॉल्ट TERMहै screen-2परिवर्तन नहीं करता है TERMऔर कुछ भी रंग-संबंधी नहीं बदलता है कि विम को अपने पर्यावरण से क्या जानकारी मिलती है: :echo &t_Coअभी भी रिटर्न 8। यह दी गई जानकारी के साथ, विम सही काम करता है। केवल चीजें हैं जो सेट किया जाना चाहिए 1. अपने टर्मिनल एमुलेटर के TERMलिए xterm-256colorया की तरह समान मूल्य urxvt-unicode-256colorऔर 2. tmux के डिफ़ॉल्ट TERMके साथ set -g default-terminal "screen-256color"
रोमेलन

@romainl अधिकांश वातावरणों ने TERMसेट किया है xterm, नहीं xterm-256color, इसलिए tmux -2(या TERM=xterm-256color tmuxएक ही चीज़ को पूरा करने के अन्य तरीकों को चलाने या बदलने की आवश्यकता है)।
गाइल्स का SO- बुराई पर रोक '22

1
@ दोस्तों, समस्या यह है कि -2 कुछ भी पूरा नहीं करता है जिसका विम रंग पर 256 रंग समर्थन के बारे में कोई प्रभाव पड़ता है क्योंकि केवल एक चीज जो विम के लिए मायने रखती है वह है आपका कार्यकाल और यह आपके श्रृंखला के अंत में सेट किया जाना है: आपके टर्मिनल एमुलेटर। यदि आप 5 होस्ट के माध्यम से एसएसएच करते हैं और आपका टर्मिनल सही ढंग से सेट है, तो 5 वें होस्ट पर शुरू किया गया विम आपके 256 रंगों को देखेगा और तदनुसार कार्य करेगा। यदि आप श्रृंखला -2 के किसी भी बिंदु पर tmux का उपयोग करते हैं तो Vim के व्यवहार पर शून्य प्रभाव पड़ेगा क्योंकि यह सभी देखता है कि tmux के डिफ़ॉल्ट TERM के कारण इसका वातावरण 8 रंगों तक सीमित है: स्क्रीन, -2 या नहीं।
रोमेनिल

72

मैंने ऊपर दिए गए सभी समाधानों की कोशिश की और अंत में मेरे लिए जो काम किया वह निम्नलिखित पंक्तियों में है .tmux.conf:

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

मैं एसएसएच के माध्यम से tmux का उपयोग कर रहा हूं और यह भी मेरे लिए काम कर रहा है, भले ही मैं xterm का उपयोग नहीं कर रहा हूं, बस एसएसएच नियमित।
अरमान.शिमून

मैं इसे ssh पर प्रयोग नहीं कर रहा था और यह एकमात्र उत्तर था जो मेरे लिए काम करता था। OSX 10.9.5 में स्थानीय iTerm सत्र।
Chev

यह मेरे लिए काम करता है (MacOS Mojave + iTerm2 / Alacritty), धन्यवाद
एड्रियन मैगडास

31

मुझे पता चला कि मुझे बहुत भ्रम हो रहा था। मैं, यहाँ अन्य लोगों की तरह, डिफ़ॉल्ट-टर्मिनल सेटिंग को प्रभावी होने में मुश्किल समय आ रहा था। मुझे याद आया कि पृष्ठभूमि में मेरा एक tmux सत्र था। मैंने अपना सत्र फिर से संलग्न किया, अपनी प्रक्रियाओं को बंद कर दिया, और सभी tmux प्रक्रियाओं को बंद कर दिया। अगली बार जब मैंने पुनः आरंभ किया तो .tmux.confप्रभावी होने के लिए डिफ़ॉल्ट-टर्मिनल सेटिंग को शुरू करना। मुझे नहीं पता कि अन्य लोग भी ऐसा कर रहे हैं, लेकिन मैं .tmux.confफ़ाइल को संशोधित करने से पहले सभी tmux प्रक्रियाओं को बंद करने की सलाह देता हूं ।

मैं के लिए किसी भी संशोधन के बिना अपने स्थानीय मशीन (iTerm2 साथ OSX 10.9.5) पर काम करने के लिए अपने सेटअप मिला .bashrcया.bash_profile । मैंने जो भी किया वह सभी tmux प्रक्रियाओं set -g default-terminal "xterm-256color"को लाइन जोड़ने ~/.tmux.confऔर पुनः आरंभ करने के लिए था ।

मुझे अपना रिमोट सेटअप (Ubuntu 14.04 को ssh) मिला, ठीक उसी तरह काम करने के लिए जैसे बिना किसी संशोधन के .bashrc। मैंने बस जोड़ाset -g default-terminal "xterm-256color" करने के लिए ~/.tmux.confमेरे दूरस्थ मशीन पर और सभी दूरस्थ tmux प्रक्रियाओं को पुनः आरंभ।

आप परीक्षण कर सकते हैं कि विम echo $TERMएक tmux सत्र के भीतर से क्या देख रहा है। यह कहती रहीscreen तब तक मूल्य के रूप में रहा जब तक मैंने सभी tmux प्रक्रियाओं को फिर से शुरू नहीं किया, जिस बिंदु पर यह xterm-256colorअपेक्षित रूप से परिलक्षित हुआ ।

उम्मीद है की वो मदद करदे।


1
मैंने इस पोस्ट के बाद से कई और ऑपरेटिंग सिस्टमों की पुष्टि की है, सभी प्रक्रियाओं को बंद करने और default-terminalविकल्प सेट करने में .tmux.confअब तक 100% काम किया है।
Chev

2
मैं भी! मैं इस पर कम समय बिताता अगर यह जवाब आगे बढ़ता।
सिगफ्रीड

21

तो यह बासी पक्ष पर एक सा है, लेकिन यह ध्यान देने योग्य हो सकता है कि स्क्रीन का उपयोग करने से अक्सर होम और एंड कीज़ टूट जाएंगे। का उपयोग करते हुए

export TERM="xterm-256color"

इन की कार्यक्षमता बनाए रखना चाहिए और रंग योजना (या पॉवरलाइन) को ठीक काम करने देना चाहिए।


इस पर ध्यान दिलाने के लिए धन्यवाद। मुझे नहीं पता था। यह अभी भी डेबियन डर्व के लिए काम करता है जो मैंने अब तक देखा है। मेरे बचाव में पोस्ट OSX के संदर्भ में था।
जेट्रिक

tmux 1.9a, OSX 10.9.2, iTerm2 बिल्ड 1.0.0.20130622 में TERM = "xterm-256color" .bash_profile पर निर्यात करें, फिर इटर्म को xterm-256-color में सेट करें, जो मेरे लिए काम करता है। कोई tmux कॉन्फ़िगरेशन सेट करने की आवश्यकता नहीं है।
एजेंटियो

14

मुझे खिड़कियों पर ubuntu और cygwin / mintty पर टर्मिनल में tmux के साथ सही ढंग से प्रदर्शित करने के लिए विम की आवश्यकता थी। मुझे इस तरह से जवाबों को मिलाकर काम करना पड़ा।

.Bashrc में:

alias tmux="tmux -2"

Invimrc:

" 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

इस सवाल के जवाब के आधार पर, यह विम पेज और इस ब्लॉक कर्सर सवाल है


मुझे शेट्टी के साथ मुद्दा मिला था, और विम कॉन्फ़िगरेशन को जोड़ने से यह मेरे लिए तय हो गया। मुझे tmuxउपनाम करने की भी आवश्यकता नहीं थी ।
त्रिपोमेन

@trigoman, मेरे लिए भी यही, मुझे सिर्फ .vimrc को अपडेट करना था।
मसूद आलम

मैंने पिछले सभी सुझावों की कोशिश की। बस set t_Co=256.vimrc में जोड़ा गया और इसे ठीक कर दिया गया। मुझे एक tmuxउपनाम बनाने की आवश्यकता नहीं थी ।
माइक

11

मैंने उपरोक्त सभी निर्देशों की कोशिश की है, और मुझे पता चला कि सबसे महत्वपूर्ण बात यह है कि मुझे अपने .bashrc फ़ाइल में निम्नलिखित पंक्ति को स्पष्ट रूप से जोड़ना होगा।

export TERM=screen-256color

मुझे नहीं पता कि क्यों उर्फ ​​tmux = "TERM = screen-256color-bce tmux" काम नहीं करता है। मैं सिएरा 10.12.1 का उपयोग करता हूं।


इसी से मेरा काम बना है। TERM का सिर्फ सादा निर्यात। +1
मार्कोवचिन

10

मामले में किसी को भी 24-बिट रंग समर्थन की आवश्यकता होती है:

Tmux संस्करण 2.2 के रूप में 24-बिट रंग का समर्थन करता है। यदि आपका टर्मिनल 24-बिट रंग का समर्थन करता है, तो अपने टर्मिनल को टर्मिनल-ओवरराइड्स सेटिंग में जोड़ें। उदाहरण के लिए,

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

मेरा पर्यावरण चेकलिस्ट:

  • macOS सिएरा 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


इन दो पंक्तियों का परीक्षण किया है, और वे WSL-Windows10 पर मेरे विम के लिए अच्छी तरह से काम करते हैं।
लेलिनफेंग

1
बहुत बहुत धन्यवाद। इसने
ग्नोम

4

.Tmux.conf में निम्न पंक्ति जोड़कर मेरे लिए macOS Sierra 10.12.6 के साथ काम किया,

सेट-डिफॉल्ट टर्मिनल "स्क्रीन -255 kcolor"


मुझे भी। इस समाधान को खोजने के लिए धन्यवाद @waffl!
एडम एरिकसन

3

यदि आप अपने आप को मेरे जैसे ही बैठते हैं, तो उपरोक्त में से कोई भी काम नहीं किया है .. यह कोशिश करें:

में .tmux.conf:

set -g default-terminal "xterm"

bash config में (शायद .bashrcया .bash_profile):

alias tmux="tmux -2"

और फिर चलाएं:

killall tmux

और फिर relmunch 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

बस इस समस्या से निपटना था, और यद्यपि पहले से पोस्ट किए गए सभी उत्तर सहायक थे, उन्होंने मेरे मामले में समस्या का समाधान नहीं किया।

मेरी समस्या निम्न पंक्ति को हटाकर तय की गई थी .vimrc:

set termguicolors

जो किसी भी अन्य निर्देश के साथ वैसे भी निरर्थक था।

अब, निम्न पंक्ति के साथ पिछले awsers में पाया मेरे .tmux.conf:

export TERM="screen-256color"

सब अच्छा और रंगीन है।


2

मैंने लाइन हटा दी है set termguicolors, लेकिन यह काम नहीं करता है। कार्यों set notermguicolorsमें इसके बजाय सेट करना .vimrc


1

Tmux मैन पेज से, निम्नानुसार ध्वज जोड़ना:

tmux -2

यह -2ध्वज 256-रंग मोड पर चलने के लिए tmux को बाध्य करता है।

यह मेरे लिए काम करता है


1

मेरे पास एक अलग TERMया सेट-डिफॉल्ट-टर्मिनल निर्यात करने की कोशिश करने के लिए बहुत अधिक भाग्य नहीं था .tmux.conf

Tmux के भीतर विम रंगों को ठीक करने के लिए मेरा समाधान इस पंक्ति को जोड़ रहा था .tmux.conf:

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

मुझे यकीन नहीं है कि इस ओवरराइड की आवश्यकता क्यों थी क्योंकि मुझे TERM=xtermऔर मेरे पास iTter सेट के रूप में अच्छी तरह से xterm है, लेकिन यह काम करने लगता है।


0

मैं Ubuntu बायोनिक 18.04.4 LTS और tmux 2.6 का उपयोग कर रहा हूं। मेरे पास एक ही मुद्दा है और इसे बस .bashrc में जोड़कर हल किया जा सकता है

export TERM=screen-256color

और यह स्रोत के लिए भूल नहीं है। source ~/.bashrc

या बस अपने मंदिर को फिर से शुरू करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.