Tmux में vim बैकग्राउंड के लिए 256 कलर सपोर्ट


98

tmux के भीतर विम का उपयोग करते समय मैं देख सकता हूं कि 256 रंग समर्थन सक्षम है। $ tput रंग के साथ

हालाँकि vm में कलर्सकेम को बदलते समय जबकि tmux में प्रति पंक्ति के आधार पर कलर्सकेम को बदलेंगे लेकिन संपूर्ण पृष्ठभूमि को नहीं। स्क्रीनशॉट देखेंयहाँ छवि विवरण दर्ज करें

यहाँ उदाहरण के लिए मेरी .vimrc फ़ाइल का एक स्निपेट है। मेरा मूल कलरकेम सोलराइज़्ड डार्क है और फिर चलने के बाद: कलर्सकेम मोलोकाई आप देखते हैं कि क्या होता है।

जानकारी

  • GNOME टर्मिनल
  • दे घुमा के

मेरे ~ / .tmux.conf में

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

मेरी ~ / .vimrc में

    set t_Co=256

मेरी ~ / .bashrc में

# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"

मेरे ~ /। inileile में

# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
    export TERM='xterm-256color'
  else
    export TERM='xterm-color'
  fi

किसी भी विचार कैसे मैं विम में एक पूर्ण colorcheme परिवर्तन प्राप्त कर सकते हैं? क्या फाइलों से मेरे सभी स्निपेट अच्छे दिख रहे हैं?


यदि आप सामान्य मोड में नियंत्रण-एल दबाते हैं, या ": redraw" कमांड निष्पादित करते हैं तो क्या होता है?
हेप्टाइट

@ कुछ भी नहीं होता है अभी भी रंग परिवर्तन प्रति पंक्ति की तरह है स्क्रीनशॉट में
winchendonsprings

जवाबों:


75

आपके .bashrc और .profile के लुक से, tmux के अंदर के गोले आपके tmux conf में 'डिफ़ॉल्ट-टर्मिनल' सेटिंग को ओवरराइड कर रहे हैं। कुछ इस तरह:

  • tmux नए शेल बनाता है TERM=screen-256color
  • .bashrc / .profile रन, सेट करें TERM=xterm-256color
  • vim चलाता है, tmux के लिए गलत TERM का उपयोग करने की कोशिश करता है

आप इसे चलाकर देख सकते हैं

echo $TERM

एक ताजा tmux खोल में।

Tmux एक टर्मिनल सेट को सही ढंग से रखने के बारे में अपेक्षाकृत उपयुक्त है। यदि आप कर सकते हैं, तो शब्द का मूल्य सूक्ति-टर्मिनल के कॉन्फ़िगरेशन में सेट करें, आपके .bashrc में नहीं। ऐसा करने में, उन सेटिंग्स को "स्क्रीन" या "स्क्रीन -2500 कैलोर" के लिए चेक के साथ घेर लें, और उस स्थिति में उन्हें रीसेट न करें।

Tmux सच में टर्मिनल सेट करने के लिए screenया चाहता हैscreen-256color


5
खैर आपने इसे ठीक कर दिया। मैंने केवल अपने .bashrc और मेरी .profile फ़ाइलों में कुछ भी टिप्पणी की थी जो कि रंग को 256 पर सेट करने के साथ करना था। पुनरारंभ किए गए tmux और vim उचित पृष्ठभूमि और 256 रंगों को सक्षम करने के साथ काम करता है। क्या आप मुझे बता सकते हैं कि गनोम-टर्मिनल कॉन्फ़िगर फ़ाइल कहाँ है? जब आप कहते हैं कि tmux टर्मिनल को 'scfeen-256color' पर सेट करना चाहता है, तो क्या आपका मतलब है जैसे मेरे tmux.conf में है? धन्यवाद
winchendonsprings

मेरे पास यह जांचने के लिए आसान नहीं है कि गनोम-टर्मिनल के साथ एक मशीन है, लेकिन सेटिंग जीयूआई में कहीं होनी चाहिए, शायद 'प्रोफाइल सेटिंग्स' के तहत या ऐसा कुछ।
bloy

5
इसके अलावा, हाँ, चलो tmux गोले के लिए अपनी बात करते हैं यह spawns। set -g default-terminal "screen-256color"अपने tmux conf में लाइन छोड़ें ।
bloy

2
उपरोक्त सभी वह है जो मैं बाद में था (सुनिश्चित करें कि TERM सही तरीके से सेट और tmux में ओवरराइड नहीं है), और तब मुझे tmux को लोड करने के लिए 'tmux -2' का उपयोग करना पड़ा।
प्रेत नोव

कोशिश करो if [[ $TERM == xterm ]]; then TERM=xterm-256color; fi, यह मेरे लिए काम किया।
असममित

59

जैसा कि यहां बताया गया है , टर्मिनल विकल्प ( वीम में चलाएं और फिर टर्मिनल के डिस्प्ले को रिफ्रेश करने के लिए + दबाकर ) बैकग्राउंड कलर इरेज (बीसीई) को अक्षम करें ताकि कलर स्कीम ठीक से काम करें जब विम का उपयोग tmux और GNU स्क्रीन के अंदर किया जाता है।t_ut:set t_ut=ControlL


7
यह केवल एक चीज है जो अंत में मेरे लिए काम करती है!
Oz123

3
मैंने set t_ut=अपने vimrc को जोड़ना समाप्त कर दिया, जो मैन्युअल रूप से कमांड का उपयोग करने की आवश्यकता को हटा देता है और BCE अक्षम सत्र शुरू होने के बाद से <kbd> नियंत्रण </ kbd> + <kbd> L </ kbd> का उपयोग करने की कोई आवश्यकता नहीं है।
एरन'

PuTTY का उपयोग करते समय यह आवश्यक है। जब कलरकेम की पृष्ठभूमि होती है, तो सभी TERM संयोजन कम हो जाते हैं। धागे के अलावा बढ़िया।
बोटीमर

यह तब काम करता है, जब यह समाधान माउस के साथ कॉपी और पेस्ट किया जाता है और रिक्त स्थान की रेखाओं को कॉपी और पेस्ट करता है (यदि उन्हें हाइलाइट किया गया है।)
घोड़े के बाल

17

मुझे इस पोस्ट पर एक बेहतर तरीका मिल गया है । आप tmux का एक उपनाम बना सकते हैं tmux -2जो tmux को यह मानने पर मजबूर कर देगा कि शेल 256 कलर टर्मिनल का उपयोग कर रहा है।


4

यह मेरे लिए #Ubuntu और #Mac में काम किया है:

# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
  export TERM=xterm-256color
fi
alias tmux='tmux -2'  # for 256color
alias tmux='tmux -u'  # to get rid of unicode rendering problem

पुनः लोड करें सेटिंग्स:

$ स्रोत ~ / .bashrc # उबंटू

$ स्रोत ~ / .bash_profile # मैक

Mac के लिए .bashrc सेट करें (जैसा कि इसका उपयोग tmux द्वारा किया जाता है)

# File: ~/.bashrc (Mac)
source ~/.bash_profile

~ / .Tmux.conf में "डिफ़ॉल्ट-टर्मिनल" विकल्प सेट करें।

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu

1

टर्मिनल में निम्नलिखित को चलाने के लिए एक त्वरित फिक्स है।

export TERM=xterm-color

आप इसे अपने ~/.bash_profileया अन्य प्रोफ़ाइल में जोड़ सकते हैं जो हमेशा शुरुआत में सेट हो।


धन्यवाद! .zshrcवास्तव में दृश्यमान दृश्य प्राप्त करने के लिए मुझे अपने साथ जोड़ने की आवश्यकता थी ।
danmcardle

1

मुझे ग्नोम-टर्मिनल + tmux + vim के लिए बहुत समान समस्या थी लेकिन इसे विशिष्ट कुंजी संयोजन समस्या के लिए भी बढ़ा दिया गया था:। मुझे कुछ चीजों को एक साथ जोड़ना था। सबसे पहले मुझे अपना .tmux.conf सेटअप करना था:

# Ensure terminal starts with its own colour scheme (helps Vim/Neovim themes to not break)
set -g default-terminal "xterm-256color"
# set -g default-terminal "screen-256color" # no S-Fx keys ;-(
# and ensure the key-codes are xterm alike
set -g xterm-keys on

फिर .vimrc:

if $COLORTERM == 'gnome-terminal'
      set t_Co=256
endif
set t_ut=

और इसने कुंजियों और पृष्ठभूमि के लिए काम किया।


1

यदि आप अभी भी समस्याओं का सामना करते हैं: मैंने देखा कि विम t_Co=8tmux के अंदर विकल्प का उपयोग करने के लिए वापस गिर जाता है, भले ही $TERMवह सेट हो screen-256color। मेरा काम यह vimrc में स्निपेट है:

if exists("$TMUX")
        set t_Co=256
        set notermguicolors
else
        set termguicolors
endif

$TMUXचर केवल एक tmux सत्र के अंदर अगर भर जाता है। इस मामले में, मैं विम को 256 रंगों का उपयोग करने की अनुमति देता हूं। ध्यान दें कि मैं भी टर्मगुइकोलॉर्स को परेशान करता हूं क्योंकि tmux सच्चे रंगों का समर्थन नहीं करता है।


0

बस अब उसी समस्या का सामना करना पड़ा। चाल के जवाब और मेरे ~ / .profile की वर्तमान सामग्री के आधार पर (वास्तव में, यह winchendonsprings 'के रूप में ही है ) मैंने अपनी समस्या इस प्रकार हल की है:

~/.profile:

if [[ -z $TMUX ]]; then
    if [ -e /usr/share/terminfo/x/xterm+256color ]; then # may be xterm-256 depending on your distro
        export TERM='xterm-256color'
    else
        export TERM='xterm'
    fi
else
    if [ -e /usr/share/terminfo/s/screen-256color ]; then
        export TERM='screen-256color'
    else
        export TERM='screen'
    fi
fi

तर्क सरल है: यदि हम tmux सत्र के अंदर नहीं हैं, तो xterm (रंगीन या नहीं) का उपयोग करें। अन्यथा स्क्रीन के लिए एक ही बात है।

हो सकता है कि यह बहुत वाचाल हो, लेकिन आपको यह विचार मिल गया है।

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