विम में अनुगामी रिक्त स्थान प्रदर्शित करें


11

मैं अपने टर्मिनल विम में सफेद-अंतरिक्ष को पीछे छोड़ते हुए एक अच्छा और प्यारा प्रदर्शन करना चाहूंगा। यह मुझे फ़ाइल बंद करने से पहले उन्हें निकालने की अनुमति देगा।

मुझे पता है कि यह प्रश्न काफी लोकप्रिय है और मुझे पहले से ही एसओ के दर्जनों उत्तर मिल चुके हैं। दुर्भाग्य से मैं अभी तक एक संतोषजनक नहीं मिला ...

इसलिए मैं एकत्रित जानकारी और मेरे द्वारा हल किए गए समाधानों को संक्षेप में प्रस्तुत करने का प्रयास करूंगा।

समाधान 1: मैन्युअल रूप से अनुगामी स्थानों को उजागर करें

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

अनुगामी व्हॉट्सएप को हाइलाइट करें

पेशेवरों:

  • प्रयोग करने में आसान
  • तेज
  • के साथ संगत cursorline

विपक्ष:

  • चुना रंग अन्य रंग योजनाओं के साथ संगत नहीं है क्योंकि रंग मैन्युअल रूप से सेट है red
  • बिग रेड बैकग्राउंड ब्लॉक बहुत एस्थेटिक नहीं हैं

समाधान 2: सूची सुविधा का उपयोग करना

set list
set listchars+=trail:◦

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

पेशेवरों:

  • प्रयोग करने में आसान
  • तेज

विपक्ष:

  • :set cursorlineसक्षम होने पर जारी करें
  • के लिए समर्पित रंग list/trailविन्यास योग्य नहीं है। अन्य सूचीचरों के समान होना चाहिए

समाधान 3: छुपा सुविधा का उपयोग करना

syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2 
set concealcursor=nv
highlight Conceal ctermfg=red

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

पेशेवरों:

  • पहले उपाय की तुलना में सुंदर

विपक्ष:

  • बैकग्राउंड, बैकग्राउंड, कर्सरलाइन बैकग्राउंड जैसा नहीं है
  • अन्य गुप्त नियमों में हस्तक्षेप कर सकते हैं
  • चुना रंग हमेशा रंग योजना के अनुरूप नहीं होता है
  • विम के पुराने संस्करण के साथ संगत नहीं है

मेरा प्रश्न

प्रदर्शन और संगतता के संदर्भ में कौन सा गणना समाधान सबसे उपयुक्त है और मैं सभी पेशेवरों और विपक्षों में से किसी को कैसे प्राप्त कर सकता हूं?

अन्य शब्दों में, मैं एक समाधान खोजना चाहूँगा जहाँ:

  • हाइलाइट ट्रेलिंग रंग चुने गए कलश के साथ सहमत हैं
  • यह रंग स्पष्ट रूप से दिखाई देता है लेकिन आंखों के लिए बहुत आक्रामक नहीं है
  • cursorline(पृष्ठभूमि और अग्रभूमि) के साथ संगत `
  • अन्य प्लगइन्स के साथ संगत है जो छिपाना का उपयोग कर सकते हैं
  • अनुगामी चार्ट को किसी भी यूनिकोड चार पर सेट किया जा सकता है

यदि आपको लाल रंग पसंद नहीं है, तो एक अलग रंग चुनें। यदि आप चाहते हैं कि रंग अलग-अलग रंग योजनाओं के अनुकूल हो, तो किसी विशेष रंग का उपयोग करने के बजाय रंग समूह नाम से लिंक करें, जैसे :hi link ExtraWhitespace CursorLine,। देख लो :help hi-link
गैरीजोन

जवाबों:


4

प्रदर्शन के मामले में, इनमें से किसी को भी फर्क नहीं पड़ना चाहिए। विम ज्यादातर जटिल सिंटैक्स पैटर्न से टकरा जाता है; यहाँ पैटर्न काफी सरल है।

हाइलाइट किए गए रंग को चुने गए रंगों के साथ सहमत करने के :hi linkलिए, किसी मौजूदा समूह का उपयोग करें; आमतौर पर, यह होगा Error। बेशक, यह केवल तभी मायने रखता है जब आप स्विच करते हैं (काफी अलग) रंगकेम अक्सर; अन्यथा, उपयुक्त रंगों का सीधे उपयोग करना (जैसा कि आपके समाधान 1 में है) भी ठीक होगा।

समाधान 1: मैन्युअल रूप से अनुगामी स्थानों को उजागर करें

मैं इस के लिए जाना था, लेकिन के matchadd()बजाय का उपयोग कर :match; यह कस्टम हाइलाइटिंग के लिए बाद को छोड़ देता है। इसके अलावा, clearmatches()बहुत मोटे भी हैं; यह सभी मिलान हटाता है , और इसलिए प्लगइन्स को प्रभावित कर सकता है। आप एक स्वच्छ और शक्तिशाली कार्यान्वयन के लिए मेरे ShowTrailingWhitespace प्लगइन का उपयोग कर सकते हैं / कर सकते हैं (जिसमें कुछ विशेष फिल्टरों के अपवाद भी शामिल हैं)। हाँ, यह एक बहुत बड़ा समाधान है, लेकिन मैंने अभी तक किसी भी प्रभाव को नोटिस नहीं किया है।

समाधान 2: सूची सुविधा का उपयोग करना

यह अपने आप में एक उपयोगी विशेषता है, और इसे स्थायी रूप से रखने पर टैब पात्रों पर कर्सर की स्थिति पर प्रभाव पड़ता है, इसलिए मैं इसकी सिफारिश नहीं करूंगा।

समाधान 3: छुपा सुविधा का उपयोग करना

यह निश्चित रूप से सुविधा का उपयोग करके कुछ सिंटैक्स और प्लगइन्स के साथ हस्तक्षेप करेगा। बुरा विचार।


तो, आपके जवाब से मैं समझता हूं कि ऐसा समाधान है जो अतिरिक्त रिक्त स्थान को चिह्नित करने के लिए एक कस्टम यूनिकोड चार का उपयोग करने की अनुमति देता है। यह सवाल वास्तव में अधिक पेचीदा है जिसे मैंने शुरू में सोचा था।
अब

सही, कस्टम वर्ण केवल साथ काम करते हैं 'listchars'। मेरे लिए, हाइलाइटिंग पर्याप्त से अधिक है (विशेषकर आक्रामक रंगों के साथ)।
इंगो करकट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.