विम रंग टमक्स के अंदर और बाहर अलग क्यों दिखते हैं?


29

वातावरण:

  • फेडोरा 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 का उपयोग करना शुरू किया है और देखा है कि विम के भीतर के रंग इस आधार पर बदलते हैं कि मैं tmux के अंदर या बाहर चल रहा हूँ। नीचे Git का अंतर देखते हुए Vm के बाहर (बाएं) और tmux के अंदर (दाएं) के स्क्रीनशॉट हैं:

यहां छवि विवरण दर्ज करें

मेरा TERMचर है

  • बाहर tmux: xterm-256color
  • अंदर tmux: screen-256color

विम ने इन टर्मिनल प्रकारों की अपेक्षा के अनुसार रिपोर्ट की :set term?:

  • बाहर tmux: term=xterm-256color
  • अंदर tmux: term=screen-256color

विम भी रिपोर्ट करता है कि दोनों उदाहरण 256-रंग मोड में चल रहे हैं (के माध्यम से :set t_Co?):

  • बाहर tmux: t_Co=256
  • अंदर tmux: t_Co=256

टीएमसी के अंदर 256-रंग मोड में चलने के लिए विम को प्राप्त करने के बारे में कई समान प्रश्न हैं (मुझे जो सबसे अच्छा उत्तर यहां मिला है ), लेकिन मुझे नहीं लगता कि मेरी समस्या को उपरोक्त जानकारी दी गई है।

अगर मैं विम को टर्मिनल प्रकार के साथ सेट करता हूं, तो मैं tmux के बाहर समस्या का डुप्लिकेट कर सकता हूं screen-256color:

$ TERM=screen-256color vim

इसलिए मुझे लगता है कि रंग में अंतर का कारण बनता है xterm-256colorऔर screen-256colorटर्मिनल क्षमताओं के बीच बस कुछ अंतर है । जो शीर्षक में सामने आए प्रश्न की ओर जाता है: विशेष रूप से टर्मिनल क्षमताओं में विम रंगों के अलग होने का क्या कारण है? मुझे :set termcaptmux के अंदर और बाहर चलने के बीच अंतर दिखाई देता है , लेकिन मैं उत्सुक हूँ कि कौन से चर वास्तव में व्यवहार में अंतर का कारण बनते हैं।

पिछले प्रश्न से स्वतंत्र, क्या यह संभव है कि विम रंगों को tmux के अंदर या बाहर चलाते समय संगत होना चाहिए? कुछ चीजें मैंने कोशिश की हैं:

  • स्पष्ट रूप में डिफ़ॉल्ट टर्मिनल tmux का उपयोग करता है की स्थापना ~/.tmux.confविभिन्न मूल्यों (tmux की सलाह के खिलाफ कुछ करने के लिए पूछे जाने वाले प्रश्न ):
    सेट-डिफॉल्ट टर्मिनल "स्क्रीन -255 kcolor"
    सेट-डिफ़ॉल्ट डिफ़ॉल्ट टर्मिनल "xterm-256color"
    सेट-डिफॉल्ट टर्मिनल "screen.xterm-256color"
    सेट-डिफॉल्ट टर्मिनल "tmux-256color"
  • Tmux का उपयोग करना शुरू करना tmux -2

सभी मामलों में, विम ने tmux के अंदर अलग-अलग रंगों का प्रदर्शन जारी रखा।


क्या आप कृपया प्रारंभ script, प्रारंभ vim, छोड़ना vimऔर फिर छोड़ना scriptखोल सकते हैं, और परिणामी typescriptफ़ाइल संलग्न कर सकते हैं ? फिर TERM=screen-256color vimइसके बजाय उसी चरणों को दोहराएं ।
एग्मोंट


1
मैं xterm-256colorसंस्करण में 256-रंग से बच दृश्यों को देख सकता हूं (फ़ाइल में "38; 5;" के लिए खोज), लेकिन में नहीं कर सकता screen-256color। उदाहरण के लिए जहाँ कहीं भी है एक \e[38;5;81mमें xterm-256color(रंग # 256 रंग पैलेट के 81, एक मध्यम नीले छाया), screen-256colorशामिल \e[34mबजाय (8-रंग पैलेट के मानक नीला)। तो मुख्य सवाल यह है कि विम के मामले में 256 रंगों वाले पैलेट का उपयोग क्यों नहीं किया जाता है TERM=screen-256color
इग्मोंट

एक और दिलचस्प बात यह है कि xterm-256colorसंस्करण दो बार स्क्रीन को प्रिंट करने के लिए लगता है, पहले विरासत रंगों के साथ और फिर 256-रंग पैलेट के साथ। फ़ाइल में उदाहरण के लिए "एफ 1" खोजें, आपको दो मैच मिलेंगे xterm-256color, पहला \e[34mरंग के साथ , दूसरा साथ \e[38;5;81m। मुझे नहीं पता कि यहाँ क्या हो रहा है।
इग्मोंट

जोड़ने set -g default-terminal "screen.xterm-256color"में ~/.tmux.confऔर tmux में config को फिर से लोड (<सी>: स्रोत-फ़ाइल ~ / .tmux.conf) मेरे (मुख्य आकर्षण मुद्दा) के लिए काम किया। thx
dtrckd

जवाबों:


16

tmuxटर्मोफ़ क्षमता bce(बैक कलर इरेज़) का समर्थन नहीं करता है , जो vimइसकी "डिफ़ॉल्ट रंग" योजना का उपयोग करने का निर्णय लेने के लिए जाँच करता है।

उस विशेषता का tmuxउल्लेख कुछ बार किया गया है -


ठीक उसी तरह का बौद्धिक रूप से संतोषजनक जवाब जिसकी मुझे तलाश थी। धन्यवाद!
रस्टी शेकलफोर्ड

17

मेरे पास पहले भी ऐसा ही मुद्दा था। विम में नीले रंग की टिप्पणियों को पढ़ना मुश्किल था। इसमें .tmux.confमैंने सेट किया:

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

और में .vimrc:

set background=dark

अब यह निम्न प्रकार से दिखता है और ग्नोम टर्मिनल और साइगविन दोनों में काम करता है: यहां छवि विवरण दर्ज करें


3
इससे मेरे लिए हल हो गया। किसी कारण से, tmux के अंदर, विम एक काले रंग की पृष्ठभूमि का पता नहीं लगा रहा था। स्पष्ट रूप bg=darkसे मेरे vimrc में सेटिंग ने इसे ठीक कर दिया।
एडम कीनन

अजीब - मेरे $TERMअंदर और बाहर दोनों tmuxथा "xterm-256color"और स्पष्ट रूप से बैकग्राउंड सेट करना मेरे लिए भी यही था। धन्यवाद!
nronnei

मेरे लिए भी काम किया। मैंने सोचा था कि समस्या sttermइसलिए थी क्योंकि xfce4-terminalसब कुछ सहज लग रहा था ( cyanइसके बजाय दिखने वाली टिप्पणियाँ , blueजो कि अंधेरे पृष्ठभूमि के साथ पढ़ने के लिए बहुत कठिन है)। इस बदलाव के बाद सबकुछ ठीक हो गया। लेकिन unlet! skip_defaults_vim source $VIMRUNTIME/defaults.vimवाक्यविन्यास हाइलाइटिंग आदि का उपयोग करने के लिए vimrc फ़ाइल में जोड़ना याद रखें ...
Abinash Dash

2

@ एंगमॉन्ट के विश्लेषण के लिए धन्यवाद कि विम किस रंग का उत्पादन कर TERM=screen-256colorरहा था, जब मैं उस रंग योजना को देखने के लिए प्रेरित हुआ, जिसका उपयोग विम दो परिदृश्यों में कर रहा है।

विम की रिपोर्ट है कि यह दोनों मामलों defaultमें रंग योजना का उपयोग कर रहा है । मैंने सोचा कि यह अजीब है क्योंकि फेडोरा 25 ( ) पर रंग योजना उन रंगों से मेल नहीं खाती है जो मैं वास्तव में देखता हूं । मैं स्पष्ट रूप से का उपयोग कर रंग योजना सेट करते हैं जब , विम की उपस्थिति है कि जब में परिवर्तन । रंगों को वापस पाने के लिए जब वे पहली बार विम शुरू कर रहे थे, तो मुझे रंग योजना का उपयोग करना था । प्रगति!default/usr/share/vim/vim80/colors/default.vimTERM=xterm-256color:colorscheme defaultTERM=xterm-256colorTERM=screen-256colorron

मुझे एक उबंटू उत्तर मिला, जो बताता है कि जब विम रिपोर्ट में defaultरंग योजना का उपयोग कर रहा है , तो इसका मतलब जरूरी नहीं है default.vim, बल्कि कुछ थीम-विशिष्ट रंग योजना है। जैसा कि उत्तर बताता है, एक डार्क थीम (जिसका मैं उपयोग कर रहा हूं) ronरंग योजना से मेल खाती है , जैसा कि मैंने ऊपर पता लगाया है। (भले ही यह पोस्ट उबंटू के संबंध में है, मैं मान रहा हूं कि ओपी GNOME का उपयोग कर रहा था।)

मुझे एक और प्रश्न भी मिला जो उसी समस्या का वर्णन करता प्रतीत होता है जो मुझे हो रहा है। मैंने इस प्रश्न को पोस्ट करने से पहले खोजा था, लेकिन किसी कारण से, रंग योजना ने मुझे प्रासंगिक नहीं बताया।

मैंने अपने जवाब में क्या किया @LapshinDmitry किया और colorscheme ronअपनी ~/.vimrcफाइल में स्पष्ट रूप से सेट किया । अब, क्या मैं tmux के अंदर या बाहर Vim शुरू करता हूं, रंग समान दिखाई देते हैं। एकमात्र दोष यह है कि अगर मैं कभी भी अपने डेस्कटॉप विषय को एक गहरे स्वाद से हल्के स्वाद में बदलता हूं, तो विम स्वचालित रूप से "डिफ़ॉल्ट" लाइट थीम रंग योजना पर स्विच नहीं करेगा, जो कि स्पष्ट रूप से है peachpuff। मैं उस के साथ रह सकता हूं, क्योंकि मुझे अपनी थीम बदलने की संभावना नहीं है।

मैं इस उत्तर को स्वीकार नहीं करने जा रहा हूं क्योंकि मैं ~/.vimrcसमाधान के बजाय अपने वर्कअराउंड में रंग योजना को स्पष्ट रूप से सेट करने पर विचार करता हूं । अगर कोई समझा सकता है कि विम का मूल्य के आधार पर एक अलग "डिफ़ॉल्ट" रंग योजना को क्यों लोड किया गया है TERM, तो मुझे उस उत्तर को स्वीकार करने में खुशी होगी, क्योंकि मैं मूल कारण को समझने में अधिक रुचि रखता हूं। मुझे संदेह है कि यह कुछ करने के लिए है कि कैसे विम दो टर्मिनल फ़ाइलों के बीच टर्मिनल क्षमताओं की व्याख्या करता है।


मैं भी उत्सुक हूं कि vimइस तरह से व्यवहार क्यों किया जाता है। सब के बाद, bceक्षमता को रंगों की उपलब्ध संख्या से कोई लेना-देना नहीं होना चाहिए।
इग्मोंट

@egmont I ने @ थॉमसडीके के उत्तर की व्याख्या की: 1) विम bceटर्मिनल की क्षमता की जांच करता है , 2) यदि मौजूद है, तो रंग योजना "ए" का चयन करें, 3) अन्यथा, रंग योजना "बी" का चयन करें। मेरा मानना ​​है कि रंग की गहराई दोनों मामलों में समान है (यानी 256 रंग, t_Coशो के रूप में )। यह सिर्फ इतना है कि मेरे सिस्टम पर रंग योजना "बी" केवल 8-रंग पैलेट का उपयोग करने के लिए होती है, भले ही 256 रंग संभव हो (मुझे लगता है कि आपके टाइपस्क्रिप्ट विश्लेषण में आपने जो देखा है उसे स्पष्ट करें। कृपया मुझे सही करें अगर मैं गलत हूं)। याद रखें, मेरे दौड़ने के बाद :colorscheme ron, मुझे एक ही विम सत्र में 256-रंग से बचने के क्रम दिखाई देते हैं।
शाकलेफोर्ड

स्पष्टीकरण के लिए धन्यवाद - मैं अभी भी इसके पीछे कोई तर्क नहीं देख सकता। कोई बात नहीं। vimवास्तव में अजीब डिजाइन निर्णय है।
इग्मोंट

0

मेरा TERM वेरिएबल आउटसाइड tmux: xterm-256color इनसाइड tmux: screen-256color है

यह सही है और मेरे लिए काम कर रहा है। यह देखने के लिए एक अलग टर्मिनल (मैं urxvt का उपयोग करता हूं) के साथ प्रयास करें कि क्या गनोम टर्मिनल समस्या है। 

इसके अलावा चेक COLORTERM(मेरा सेट है rxvt) और unset TERMCAP


सुझाव के लिए धन्यवाद। मैंने urxvt के साथ एक ही परीक्षण चलाया (बाहरी TERM है rxvt-unicode-256color) एक उपयुक्त ~/.Xdefaultsऔर दुर्भाग्य से अभी भी tmux के अंदर और बाहर अलग-अलग रंगों का उपयोग करते हुए । GNOME टर्मिनल परिदृश्य के लिए, COLORTERMहै truecolorऔर TERMCAPअंदर और बाहर दोनों tmux खाली है। Urxvt परिदृश्य के लिए, COLORTERMहै rxvt-xpmके बाहर और truecolorअंदर tmux जबकि TERMCAPहै अंदर और बाहर दोनों tmux खाली।
रस्टी शेकलफोर्ड

@RustyShackleford यह केवल विम के लिए है? क्या आप 'termguicolors' का उपयोग कर रहे हैं? :help xterm-true-colorअधिक डिफ़ॉल्ट विम कॉन्फिग पर एक नज़र डालें या प्रयास करें।
लखटक

मैंने केवल अभी तक विम में समस्या पर ध्यान दिया है (जैसे मैंने कहा, मैंने केवल हाल ही में tmux का उपयोग करना शुरू किया है)। उदाहरण के लिए, मेरे टर्मिनल प्रॉम्प्ट और Git CLI आउटपुट में tmux के अंदर और बाहर दोनों समान रंग दिखाई देते हैं। मैं termguicolorsअपने मामले में .vimrcऔर दोनों मामलों में :set termguicolors?रिपोर्ट नहीं करता notermguicolors। मैं आपके द्वारा संदर्भित सहायता विषय को देखूंगा; धन्यवाद!
रस्टी शेकलफोर्ड

0

अपने स्वयं के संदर्भ के लिए बाद में जब मैं निस्संदेह यह मेरी अगली मशीन की स्थापना गूगल।

  • विम 8 / नेओविम
  • विंडोज 10
  • गिट बश
  • Tmux 2.7

Git bash के PATH में आवश्यक बायनेरीज़ और DLL प्राप्त करने के लिए इन निर्देशों का उपयोग करें:

https://blog.pjsen.eu/?p=440

कॉन्फ़िगर करने के लिए इन कमांड का उपयोग करें:

echo 'set -g default-terminal "screen.xterm-256color"' > ~/.tmux.conf
tmux -2u
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.