Vimdiff का उपयोग करते समय अलग-अलग कलरकेम लोड करें


137

कैसे करते समय एक अलग colorcheme लोड करने के लिए vimdiff

मैं यह चाहता हूं क्योंकि मेरे वर्तमान कलर्सकेम में कुछ भिन्नताएं ठीक से दिखाई नहीं देती हैं vimdiff, फॉर। उदाहरण के लिए कुछ भिन्न को समान fg / bg रंग के साथ दिखाया गया है। इससे अंतर को समझना बहुत कठिन हो जाता है। इसलिए हर बार मुझे i करना vimdiffपड़ता है:colorscheme some_other_scheme

क्या यह .vimrcफ़ाइल में किया जा सकता है ?

जवाबों:


118

यदि आप vimdiffकमांड-लाइन से कॉल कर रहे हैं , तो अपने में निम्नलिखित डालें .vimrc:

if &diff
    colorscheme some_other_scheme
endif

यदि आप vimdiff का उपयोग vim से कर रहे हैं, तो आपको या तो आपके द्वारा प्रारंभ / बंद करने के लिए उपयोग की जाने वाली आज्ञाओं को ओवरराइड करना होगा (जैसे diffthis, diffoff) :cnoreabbrएक प्लगइन ( या एक प्लगइन भी है ) का उपयोग करें या एक ऑटोकॉमैंड का उपयोग करें:

au FilterWritePre * if &diff | colorscheme xyz | endif

FilterWritePre को एक बाहरी प्रोग्राम (अलग उपयोगिता) के माध्यम से फ़िल्टर करने से पहले कहा जाता है और &diffजब इसे अलग-अलग मोड में जा रहा होता है, तो इसे गोद लेना निर्धारित होता है (दूसरों के बीच, देखें :help diff)

मुझे यकीन नहीं है कि कौन सा ऑटोकॉमैंड मूल कलशके वापस जाने के लिए उपयोग करना है।


क्या दो पाइपों के बीच एक से अधिक कमांड को कॉल करना संभव है "|"? मैं भी vimdiff से vimdiff का उपयोग करने के बाद मूल colorcheme के बदले में रुचि होगी ...
कोई अभी भी आप का उपयोग करता है MS-DOS

1
पाइप नई ;स्क्रिप्ट के लिए विकल्प हैं, शेल स्क्रिप्ट के समान , इसलिए आप बस नई 'लाइन्स' जोड़ सकते हैं:if &diff | colorscheme xyz | cmd2 | cmd3 | endif
DataWraith

1
colorscheme some_other_schemeके लिए अपने क्रम पथ के माध्यम से दिखेगा color/some_other_scheme.vim। आप अपने रनटाइमपथ को :set runtimepath?विम के भीतर से देख सकते हैं ।
पाबो

1
कंसोल उपयोगकर्ताओं (अपने आप की तरह) के लिए, मैंने हाइलाइट किए गए डिफरेंशियल और हाइलाइट किए गए सिंटैक्स के बीच कंट्रास्ट बनाए रखने के लिए कम से कम शेल स्क्रिप्ट के लिए 'विविडचैक' को सबसे अच्छा कलरकेम (डिफॉल्ट इंस्टॉल सेट से बाहर) पाया। एक करीबी सेकंड 'शाम' था। उम्मीद है की वो मदद करदे।
कॉनरेड मेयर

मेरी समस्या हमेशा सिंटेक्स हाइलाइटिंग के साथ कंट्रास्ट की कमी है, जो कि अलग-अलग रंग में पाठ की पूरी मात्रा खो देता है। मैंने अतीत में आवश्यकतानुसार ': वाक्य रचना बंद' का इस्तेमाल किया, लेकिन अभी इसे अपने .vimrc में 'if और diff' में जोड़ दिया और भविष्यवाणी की और अब कुछ कीस्ट्रोक बचाए
qneill

166

मुझे नहीं पता कि विम इतने सारे रंगों का उपयोग क्यों करता है, इसके साथ हाइलाइट करने के लिए, यह वास्तव में आपको यह पता लगाने में मदद नहीं करता है कि क्या चल रहा है।

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

इससे पहले

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

उपरांत

colorscheme_screenshot

मैंने अपनी colorcheme फ़ाइल के अंत में निम्नलिखित जोड़कर ऐसा किया ( ~/.vim/colors/mycolorscheme.vim)।

highlight DiffAdd    cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffText   cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
  • cterm - स्टाइल सेट करता है
  • ctermfg - टेक्स्ट का रंग सेट करें
  • ctermbg - हाइलाइटिंग सेट करें
  • DiffAdd - लाइन गयी थी
  • DiffDelete - लाइन हटा दी गई
  • DiffChange - लाइन का हिस्सा बदल गया था (पूरी लाइन पर प्रकाश डाला गया)
  • DiffText - लाइन का सटीक हिस्सा जो बदल गया

मैंने इस लिंक का उपयोग रंग संख्याओं के संदर्भ के रूप में किया ।

नोट: मैंने gui विकल्पों को सेट नहीं किया है क्योंकि मैं macvim / gvim के लिए एक अलग colorcheme का उपयोग करता हूं


1
धन्यवाद! यह बहुत अच्छा लग रहा है!

4
जैसे पाबो ने एक अन्य टिप्पणी में कहा, आपको अपनी रंग योजना फ़ाइल जैसे mycolorscheme.vim, को .vim एक्सटेंशन के साथ अंत में नाम देना पड़ सकता है।
डेविड विनीकी

धन्यवाद! माइनर नाइट: मुझे लगता है कि आपने गलती से सभी "गुइबग" को लाल बना दिया है। क्या आपने दो रंग रखने का इरादा किया है - एक डिफटेक्स्ट के लिए और एक बाकी के लिए?
कपिल आर्य

6
जब संख्याओं का उपयोग करते हैं (ctermbg = 17) रंग काम नहीं करते हैं, लेकिन शब्दों का उपयोग करते समय (ctermbg = blue) - यह काम करता है? .. समाधान: टर्मिनल में केवल 8 रंग हैं 1-7
रिकी लेवी

3
ITOS2 का उपयोग कर MacOS। कोई फर्क नहीं पड़ता कि मैंने क्या किया, मुझे रंग योजना मिली ~ '.vim / colours / mycolorscheme' रंग कोडों की प्रतिलिपि बनाते हुए सीधे "if & diff" कथन को ~ / .vimrc में चालित किया।
टोनी बर्गांस्की


22

मैंने पाया कि इस एक-लाइनर को मेरी ~ / .vimrc फ़ाइल में पेस्ट करने का सबसे आसान तरीका था:

" Fix the difficult-to-read default setting for diff text highlighting.  The
" bang (!) is required since we are overwriting the DiffText setting. The highlighting
" for "Todo" also looks nice (yellow) if you don't like the "MatchParen" colors.
highlight! link DiffText MatchParen

3
महान समाधान! मैंने Todoइसके बजाय चुना MatchParenक्योंकि यह अधिक बाहर खड़ा है।
Mihai कैपोटे

18

यदि आप अपठनीय रंग योजनाओं का सामना कर रहे हैं (न केवल बदसूरत, बल्कि गुलाबी पृष्ठभूमि पर सफेद पाठ की तरह अपठनीय), तो 256 रंगों के बजाय 16 रंगों का उपयोग करने के लिए एक आसान निर्धारण हो सकता है। फिर आपको रंग योजनाओं के साथ गड़बड़ करने की जरूरत नहीं है।

इसका कारण यह है कि डिफ़ॉल्ट DiffChange bgविम्डीफ रंग योजना "लाइटमैगेंटा" के रूप में असाइन होती है , जो 256 रंगों में बहुत हल्के गुलाबी रंग में मैप हो जाती है। यह सफेद पाठ के साथ अपठनीय है। 16 रंगों के साथ, "लाइटमैगेंटा" को एक बोल्ड मैजेंटा के लिए मैप किया जाता है, जिस पर सफेद पाठ बहुत बेहतर दिखाता है।

आप इस तरह से कुछ करके एक त्वरित परीक्षा दे सकते हैं:

vimdiff <file1> <file2>
:set t_Co?    " print current setting (256 by default)
:highlight    " print highlighting scheme
:set t_Co=16  " set to 16 colors
:highlight    " print highlighting scheme

256-रंग स्क्रीनशॉट यहाँ छवि विवरण दर्ज करें

16-रंग स्क्रीनशॉट यहाँ छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, 16 रंग बहुत अधिक पठनीय है, रंग योजना को बदले बिना।

इसे स्थायी बनाने के लिए, आप इसे set t_Co=16अपने साथ जोड़ सकते हैं.vimrc


2
इस टिप के लिए बहुत बहुत धन्यवाद, भले ही मेरे मामले में यह दूसरी तरह से गोल था। t_Co8 में सेट किया गया था, जिससे यह set t_Co=256पठनीयता में जबरदस्त सुधार हुआ।
ओलाफ डाइटशेक

11

molokai: मोलोकई रंग योजना github: गिथब रंग योजना github और molokai दो थीम समान रूप से सुंदर हैं।

curl -fLo ~/.vim/colors/molokai.vim --create-dirs https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim
curl -fLo ~/.vim/colors/github.vim --create-dirs https://raw.githubusercontent.com/endel/vim-github-colorscheme/master/colors/github.vim

निम्नलिखित कोड अपने ~ / .vimrc में डालें, आप github या molokai ("एक टिप्पणी के साथ शुरू होने वाली एक पंक्ति") चुन सकते हैं:

if &diff
"   colorscheme github
    colorscheme molokai
endif

इस पुरानी समस्या का मेरा नया पसंदीदा समाधान!
स्टैब्लडॉग

10

ऐसे लोगों के लिए जो बहुत ही बढ़िया Solarized थीम का उपयोग करते हैं, वहाँ एक विकल्प है जो अलग मोड के लिए उच्च दृश्यता को चालू करता है:

" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"

"सामान्य" यहाँ छवि विवरण दर्ज करें

"उच्च" यहाँ छवि विवरण दर्ज करें

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


1
आपके पास इससे होने वाले अंतर का स्क्रीनशॉट नहीं होगा?
विक्टर ज़मानियन

7

मेरे वर्तमान कलकेम विम्डिफ, फॉर में कुछ भिन्न रूप से ठीक से दिखाई नहीं देते हैं। उदाहरण के लिए कुछ भिन्न को समान fg / bg रंग के साथ दिखाया गया है

वास्तव में, मैंने पाया है कि एक ही fg / bg रंग के लिए मुख्य अपराधी कोड सिंटैक्स हाइलाइटिंग और अलग-अलग कलरकेम के बीच संघर्ष के कारण है। आप डिफरेंट कलरकेम को बदलने की कोशिश कर सकते हैं, लेकिन जब आप अलग-अलग फाइल टाइप (अलग कोड सिंटैक्स हाइलाइटिंग के साथ) खोलते हैं तो यह व्हेक-ए-मोल का खेल हो सकता है।

एक निश्चित समाधान vimdiff में हाइलाइटिंग सिंटैक्स को अक्षम करना है। आप या तो टाइप कर सकते हैं:

:syntax off

या यदि आप हर बार इसे स्वचालित रूप से करना चाहते हैं, तो इसे अपने अंत में जोड़ें ~/.vimrc:

if &diff
    syntax off
endif

6

एक अन्य दृष्टिकोण उस रंग योजना को ठीक करना है।

जहाँ तक मुझे पता है, आमतौर पर diff'ing के सापेक्ष चार हाइलाइट समूह होते हैं: DiffAdd, DiffChange, DiffDelete, और DiffText। यदि आप सिंटैक्स के बारे में परेशान नहीं होना चाहते हैं या अपनी पसंद के अनुसार रंगों को ट्वीक करना चाहते हैं, तो आप शायद अपने डिफ़ॉल्ट रंग योजना को किसी अन्य नाम के तहत ~ / .vim / रंगों में कॉपी कर सकते हैं (यदि यह मौजूद नहीं है तो डायरेक्टरी बनाएं)। इसी कॉपी को पेस्ट करें: हाय आपके वैकल्पिक रंग योजना से लेकर आपकी नई कस्टम रंग योजना के अंत तक, इसके अलावा किसी भी अन्य संबंधित विवरणों को वैकल्पिक रूप से टिप्पणी करते हुए।

और यदि परिणाम एक स्पष्ट सुधार है, तो अपने रंग योजना के अनुरक्षक को अपने परिवर्तनों के साथ एक ईमेल भेजें और उसे समस्या को देखने के लिए कहें। एक अच्छा मौका है कि वह आपको आपकी रुचि के लिए धन्यवाद देगा और वह अपनी रंग योजना को ठीक करेगा ताकि अन्य उपयोगकर्ताओं को भी फायदा हो।


विम डेवलपर्स को इस बात के बारे में कई शिकायतें और सुझाव मिले हैं कि डिफ़ॉल्ट रंगकैमी एक अंधेरे पृष्ठभूमि पर कैसे दिखाई देती है, लेकिन दुख की बात यह है कि यह अभी तक तय नहीं किया गया है।
स्टीफन लासिवस्की

6

/etc/vim/vimrcया ~/.vimrc: यदि संपादन क्षेत्र और सिंटैक्स हाइलाइटिंग के भीतर एक गहरे रंग की पृष्ठभूमि का उपयोग करते हुए इस विकल्प को भी चालू करेंset background=dark


3

मैं निम्नलिखित का उपयोग करता हूं जब vimdiff का उपयोग vim के भीतर से किया जाता है:

au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif

अन्य स्टेटमेंट वाला हिस्सा महत्वपूर्ण है क्योंकि आप diff'ing के साथ काम करने के बाद अपने पिछले कॉन्फिगर में वापस जाते हैं। तो आप बदल सकते हैं syntax offऔर syntax onसंबंधित colorschemeआदेशों के साथ । यह ऑटोकैड एक सेटिंग को बदलने और विमीडफ को छोड़ने पर इसे वापस बदलना संभालता है (मैं Gdiffसटीक होने के लिए उपयोग करता हूं )।


3

@ डेडेन और कुछ अन्य उत्तरों पर विस्तार करने के लिए, इसे अपने यहां जोड़ें .vimrc:

if &diff
  " colorscheme evening
  highlight DiffAdd    cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
  highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
  highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
  highlight DiffText   cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
endif
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.