विम को एक चरित्र के रूप में सभी सफेद रिक्त स्थान दिखाएं


772

मुझे विम को एक चरित्र के रूप में सभी सफेद रिक्त स्थान दिखाने का एक तरीका नहीं मिल रहा है। मुझे जो कुछ मिला वह टैब, ट्रेलिंग स्पेस आदि के बारे में था।


14
मैं भी वास्तव में इस समस्या को हल करने की कोशिश कर रहा हूँ। कृपया, यदि आप इस पर आते हैं, तो एक और प्रतिक्रिया को शामिल करने से बचें :set list। यह हमारे सवाल का जवाब नहीं है। (अन्य कॉमर्स के लिए : mrucci की प्रतिक्रिया मददगार है, हालाँकि यह वास्तविक समाधान नहीं है ।)
ELLIOTTCABLE

1
उन सभी के लिए जो कहते हैं कि रिक्त स्थान दिखाई देते हैं listऔर listcharsविचार करते हैं कि एक स्थान सीधे एक टैब का अनुसरण कर रहा है। यह इस स्थिति में लगभग अदृश्य होगा। मैं मानता हूं कि आप ज्यादातर स्थितियों को पकड़ सकते हैं, लेकिन यदि सभी स्थानों पर उचित प्रकाश डाला जाना अच्छा होगा।
केविन कॉक्स

11
नए आगंतुकों के लिए: यह विम के नए संस्करणों में हल किया गया है! देखें Brettanomyces के नीचे इस सवाल का जवाब
ELLIOTTCABLE

1
संबंधित (लेकिन अंतर स्टैक): vi.stackexchange.com/questions/422/…
प्योरफ्रेट

जवाबों:


693

जैसा कि दूसरों ने कहा है, आप उपयोग कर सकते हैं

:set list

जो होगा, के संयोजन में

:set listchars=...

अदृश्य वर्ण प्रदर्शित करें।
अब, एक स्पष्ट विकल्प नहीं है जिसका उपयोग आप व्हाट्सएप दिखाने के लिए कर सकते हैं , लेकिन लिस्टचरों में, आप हर चीज को व्हाट्सएप पर दिखाने के लिए एक चरित्र सेट कर सकते हैं। उदाहरण के लिए, मेरा ऐसा दिखता है

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

तो, अब, आप उपयोग के बाद

:set list

सब कुछ है कि स्पष्ट रूप से कुछ और के रूप में नहीं दिखाया गया है, वास्तव में, एक सादे पुराने व्हाट्सएप है।

हमेशा की तरह, यह समझने के लिए कि कैसे listcharsकाम करता है, मदद का उपयोग करें। यह इस बारे में शानदार जानकारी प्रदान करता है कि चार्ट को किस प्रकार प्रदर्शित किया जा सकता है (उदाहरण के लिए अनुगामी स्थान, और इसे कैसे करें):

:help listchars

यह एक टॉगल जोड़ने में मददगार हो सकता है ताकि आप बदलावों को मध्य संपादन को आसानी से देख सकें (स्रोत: VIM: सेट सूची! के रूप में टॉगल के रूप में .vimrc ):

noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>

4
"सब कुछ जो स्पष्ट रूप से कुछ और के रूप में नहीं दिखाया गया है"? यू + 2000..यू + 200 ए से यूनिकोड रिक्त स्थान का प्रयास करें। यदि निश्चित-चौड़ाई वाला फ़ॉन्ट उनका समर्थन करता है तो उन्हें सामान्य 0x20 स्थान के रूप में दिखाया जाएगा।
19

2
@ZyX - मैं पूरे यूनिकोड को नहीं ले रहा था, बल्कि उपयोग में आने वाले पात्रों का सामान्य समूह था। यदि आप उत्तर से असंतुष्ट हैं, तो बेहिचक सुझाव दें।
रूक

20
@ckarbass -: invitz सेट करें
रूक

महान टिप! मैं सेट लिस्टचर्स लाइन को .vimrcफ़ाइल में रखने की सलाह देता हूं , इसलिए अदृश्य वर्णों को प्रदर्शित करने का यह सुंदर तरीका :set listकिसी भी समय (इस पृष्ठ को फिर से देखे बिना) के साथ आसानी से सक्षम किया जा सकता है ।
मेलेबियस

8
@ckarbass आप जिस तरह से किसी भी चीज़ को टॉगल करते हैं - एक जोड़! अंत की ओर। तो यह हो जाता है: सेट सूची!

275

पैच 7.4.710 के रूप में आप अब सूची के उपयोग से अंतरिक्ष की जगह दिखाने के लिए एक चरित्र सेट कर सकते हैं!

:set listchars+=space:␣

इसलिए, सभी सफेद अंतरिक्ष वर्णों को एक चरित्र के रूप में दिखाने के लिए आप निम्नलिखित कार्य कर सकते हैं:

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list

मेलिंग सूची पर चर्चा: https://groups.google.com/forum/?fromgroups# .topic / vim_dev / pjmW6wOZW_Q


2
यह बहुत अच्छा है, लेकिन मैं सोच रहा हूं कि क्यों ईओएल चरित्र दूसरों के विपरीत अलग-अलग रूप से रंगीन नहीं होता है।
CMCDragonkai 13

3
मैंने यह कोशिश की और पहली बार में एक त्रुटि हुई। यह पता चला कि "स्पेस" gvim के थोड़े पुराने संस्करण में एक वैध विकल्प नहीं था जिसका मैं उपयोग कर रहा था। मेरे जीवीएम को अपग्रेड करने से मेरी समस्या हल हो गई। दूसरों के लिए जो एक त्रुटि प्राप्त कर रहे हैं, :help listcharsयह जांचने के लिए टाइप करें कि क्या "स्पेस" "लिस्टचर्स" के लिए एक वैध विकल्प है। यदि यह नहीं है, तो अपने vim को पैच @brettanomyces में निर्दिष्ट करें। या बस "स्पेस" को सेट कमांड से बाहर छोड़ दें यदि आप रिक्त स्थान देखने की परवाह नहीं करते हैं।
निको बेलिक

4
मैं अंतरिक्ष चरित्र (के लिए यूनिकोड का मिडिल डॉट (U + 00B7) का उपयोग space:·,) के रूप में यह आदि एमएस वर्ड, नोटपैड ++, की तरह दिखता है
Dinei

1
@ user5359531 यूनिकोड ओपन बॉक्स कैरेक्टर (।) दर्ज करने के लिए <ctrl-v> u2334 आज़माएं। अधिक जानकारी के लिए sanctum.geek.nz/arabesque/special-characters-in-vim देखें
Brett Y

3
के <C-K>.Mलिए vim में टाइप करें ·:h digraphविवरण के लिए देखें।
जॉनचेन 902

252

:set list सक्षम करने के लिए।

:set nolist निष्क्रिय करने के लिए।


11
मोड के बीच टॉगल करने के लिए हमें दिखाने के लिए धन्यवाद। आपको लगता है कि अन्य उन्नत उत्तर यही सिखाएंगे।
जोनाथन कोमर

1
हाँ यह मददगार है। मैं चाहता हूं कि यह शीर्ष उत्तर था क्योंकि मुझे यह उत्तर स्वयं ही मिल गया था यह जानने के लिए कि यह साइट पर पहले से ही था, बस देखने से बाहर।
इजासो

8
: set list!बेहतर है :)
skippr

@Skippr किस उपाय से? यह कुंजी प्रेस की एक ही संख्या है, सिवाय इसके कि Shiftऔर !दोनों प्रकार से कठिन हैं no। यदि आप इसे अपने .vimrc में डाल रहे हैं, तो मैं मानता हूं कि एक्सेल फॉर्म को पढ़ना आसान है।
डैन बेहार्ड

7
@ यदि आप अपेक्षाकृत कम समय में इसे बंद :set list!करना चाहते हैं, तो ऐसा करने के लिए आपको कभी भी प्रवेश करने की आवश्यकता नहीं है nolist!बस जो कुछ भी वर्तमान में सेट किया गया है के विपरीत है। मैं हर समय इसका उपयोग करता हूं, खासकर जब मैं साथ हूं :set paste!। मैं ढूंढने के लिए तीर कुंजी दबाने से नफरत है :set pasteया :set nopastelol
skippr

187

मुझे लगता है कि यहां अन्य उत्तर अधिक व्यापक हैं, लेकिन मुझे लगा कि मैं एक ऐसी ट्रिक साझा करूंगा जिसका उपयोग मैं आमतौर पर टैब और रिक्त स्थान को अलग-अलग करने के लिए करता हूं:

:syntax on
:set syntax=whitespace

ये व्हाट्सएप प्रोग्रामिंग भाषा के लिए सिंटैक्स हाइलाइटिंग नियम हैं - टैब हरे रंग में और लाल रंग में रिक्त स्थान दिखाते हैं। :)

:set listकई अन्य उत्तरों के रूप में वर्णित किया जा सकता है, हालांकि टैब तब हरे रंग की हाइलाइट के बिना ^ I के रूप में दिखाई देंगे, लेकिन रिक्त स्थान लाल रंग में दिखाई देंगे।


7
मुझे यह पसंद है, यह काफी चतुर है, और किसी भी अन्य उत्तरों की तुलना में किसी भी तरह से बेहतर महसूस करता है। नहीं वास्तव में एक समाधान है कि हर समय प्रयोग करने योग्य है, हालांकि।
कम्प्यूटरड्रेड

4
मैं और अधिक पारंपरिक तरीकों को पसंद करता हूं, लेकिन मैं इसे आविष्कार के लिए + 1 कर रहा हूं।
Sietse van der Molen

27
मुझे पता था कि भाषा किसी चीज के लिए उपयोगी होगी ।
13

1
क्या आप को हाइलाइट करने के लिए उपयोग कर रहे
.vim

2
@SeldomNeedy आपको कुछ भी डाउनलोड करने की आवश्यकता नहीं होनी चाहिए, व्हॉट्सएप के हाइलाइटिंग नियम सालों से विम के साथ शिपिंग कर रहे हैं। जब तक आप विम के एक अजीब या वास्तव में पुराने संस्करण का उपयोग नहीं कर रहे हैं, तब तक वे अनिवार्य रूप से निर्मित होने चाहिए।
एलियट

91

:set listएक चरित्र के रूप में सभी व्हाट्सएप दिखाएगा। सब कुछ लेकिन एक स्थान अपनी सामान्य स्थिति से अलग दिखाई देगा, जिसका अर्थ है कि यदि आप अभी भी एक सादे पुराने स्थान को देखते हैं, तो यह वास्तव में एक सादे पुराना स्थान है। :)


35
इसे वापस बंद करें:set nolist
ग्रेग K

6
क्या होगा यदि आप स्पेस कैरेक्टर को देखना चाहते हैं, जैसे "शो व्हॉट्सएप" के साथ सबलाइम टेक्स्ट 2 में? मुझे यह वास्तव में मददगार लगा।
ओलिकल

मैं यहाँ नहीं आया, लेकिन बहुत मददगार था। धन्यवाद।
हार्पर्विल

4
इसके अलावा विकल्प नहीं के साथ !अंत में toggled जा सकता है :set list!
baldrs

मैं इसके लिए एक लाइनर का उपयोग करता हूं :se hls | /\_sset listरिक्त स्थान की अनदेखी करते हुए सब कुछ हो जाता है । फिर से बंद :se nohls। इस पोस्ट पर इसके बारे में विवरण: albertech.blogspot.com/2015/02/…
जार

73

यदि आप सेट करते हैं:

:highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none

और फिर एक अंतरिक्ष के लिए एक खोज करते हैं, हर अंतरिक्ष चरित्र को एक रेखांकित चरित्र के रूप में दिखाया जाएगा।

आप इस कमांड का उपयोग एक आसान फ़ंक्शन में कर सकते हैं जो रिक्त स्थान के "अंडरस्कोरिंग" को टॉगल करता है।

set hls
let g:HLSpace = 1
let g:HLColorScheme = g:colors_name
function ToggleSpaceUnderscoring()
    if g:HLSpace
        highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
        let @/ = " "
    else
        highlight clear
        silent colorscheme "".g:HLColorScheme
        let @/ = ""
    endif
    let g:HLSpace = !g:HLSpace
endfunction

फ़ंक्शन को शॉर्टकट कुंजी से मैप करें:

nmap <silent> <F3> <Esc>:call ToggleSpaceUnderscoring()<CR>

नायब: colorcheme सेट होने के बाद vimrc में फ़ंक्शन को परिभाषित करें।


1
खैर, यह थोड़ा हैक है, लेकिन यह अब तक की किसी भी चीज़ के मुकाबले करीब है। बाउंटी ने सम्मानित किया! : D
ELLIOTTCABLE

45

वर्तमान बफर के लिए आपके सिंटैक्स नियमों के आधार पर, ऐसा कुछ काम कर सकता है:

:syn match WhiteSpace / / containedin=ALL conceal cchar=Æ
:setl conceallevel=2 concealcursor=nv

इसके लिए + छुपाने की सुविधा के साथ 7.3 की आवश्यकता है

अद्यतन 10/24/2014 उस पर थोड़ा विस्तार करने के लिए। यह निश्चित रूप से शंकुधारी पात्रों के लिए कुछ हाइलाइटिंग को परिभाषित करना संभव है।

  • आप कॉन्फ़िगर कर सकते हैं कि छुपा वर्ण कैसे दिखते हैं। हाइलाइट करने के लिए, आपको कम से कम एक बार 'कंसील' हाइलाइटिंग समूह को कॉन्फ़िगर करना होगा (यह देखें सहायता :h hl-Concealइस पर आपके कलरकेम में किया जा सकता है और फिर आपको इसे फिर से कॉन्फ़िगर करने की आवश्यकता नहीं है। लेकिन यह सभी छुपा वर्णों को प्रभावित करता है (जैसे यदि आपका है) वाक्यविन्यास लिपि कुछ और वस्तुओं को छिपाती है, उन्हें आपके सफेद स्थान वर्ण के रूप में प्रदर्शित किया जाएगा)। वह इस तरह दिख सकती है।

    :hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE

  • ऐसा प्रतीत होता है कि वीआईएम रिक्त स्थान को उजागर नहीं करेगा, अगर सिंटैक्स स्क्रिप्ट skipwhiteकीवर्ड का उपयोग करता है । आसपास कोई रास्ता नहीं होगा (शायद यह तय हो जाएगा, मैंने एक पैच पोस्ट किया )

  • ऐसा लगता है कि चारों ओर एक पैच तैर रहा है, जो कि यह अनुकूलित करने की अनुमति देगा कि रिक्त स्थान कैसे दिखेंगे list। लेखन के समय नवीनतम यह एक प्रतीत होता है । (इसका मतलब है, आपको इसका उपयोग करने के लिए अपना खुद का वीम बनाने की आवश्यकता है)।
  • conceallevelऔर concealcursorखिड़की स्थानीय विकल्प हैं। इसका मतलब है कि वे अलग-अलग विंडो में अलग हो सकते हैं (और संभवतः इसे फिल्टाइप प्लगइन्स या अन्य प्लगइन स्क्रिप्ट द्वारा भी सेट किया जाएगा)।
  • जब भी सिंटैक्स परिभाषा फ़ाइल पुनः लोड की जाती है तो सिंटैक्स हाइलाइटिंग समूहों को निष्पादित करने की आवश्यकता होती है। यह एक का उपयोग करके किया जा सकता है BufWinEnterया संभवतः एक Syntaxया यहां तक ​​कि FileTypeऑटोकॉमैंड भी । (मैंने परीक्षण नहीं किया है कि कौन सा वास्तव में काम करता है)।

अंतिम दो मदों का मतलब है, आपको कुछ ऑटोकॉमैंड्स को सेटअप करना होगा जो कि सिंटैक्स नियमों और संक्षिप्त विकल्पों को रीसेट करता है। पहले के लिए, किसी व्यक्ति को एक ColorSchemeऑटोकॉमैंड का उपयोग करके हाइलाइटिंग को सेटअप करने की आवश्यकता हो सकती है (ताकि छुपा हुआ वर्ण हमेशा एक जैसा दिखे, स्वतंत्र रूप से एक रंग योजना क्या सेट करती है)। एक पूर्ण समाधान के लिए, रोमेल उत्तर में देखें, कि आपको एक शुरुआत देनी चाहिए। यदि आप एक फ़ंक्शन सेटअप करते हैं, तो आप विशेष हाईलाइटिंग को चालू या बंद करने के लिए टॉगल कमांड को आसानी से सेट कर सकते हैं।

अद्यतन 10/26/2014 मैंने इस प्रश्न से एक प्लगइन बनाया ।

अपडेट 04/22/2015 विम में एक पैच शामिल किया गया है जो listविकल्प का उपयोग करके यह संभव बनाता है। बस सेट करें set list listchars+=space:␣ यह Vim 7.4.711 के रूप में काम करता है


यह महान काम करता है! इसे कैसे जोड़ा जा सकता है .vimrc?
एरिक मार्टिंडेल

1
चूंकि यह वर्तमान बफर पर काम करता है, इसलिए आपको संभवतः इसे एक ऑटोकॉमैंड में लपेटने की आवश्यकता है। BufEnter या यहां तक ​​कि सिंटेक्स ऑटोकॉमैंड आपके लिए काम कर सकता है:
क्रिश्चियन Brabandt

3
Æइसके लिए चरित्र का एक अजीब विकल्प है, क्यों नहीं ·?
मारियस गेदमिनस

1
यह वास्तव में सही उत्तर है। इस चरित्र पर प्रकाश डाला गया उचित वाक्यविन्यास जोड़ने के बारे में कोई विचार? मैं इसे पसंद करेंगे अगर यह थे एक बहुत ही फीका ·
हवाई हमले

@ChristianBrabandt, आपके पास अपने रेपो को प्रदूषित करने वाली nrrwrgn- संबंधित फ़ाइलों का एक समूह है।
रोमेनिल

31

मैं इसका उपयोग करता हूं

/\s
:set hlsearch

सफेद स्थानों को उजागर करने के लिए। यह सभी सफेद स्थानों की खोज करता है, और फिर उन्हें पॉप आउट करने के लिए हाइलाइट सक्षम करता है। हालाँकि, यह एक विशेष वर्ण नहीं छापता है।


सरलतम समाधान imho। ग्रेट ने स्पष्ट खोज (मैं उपयोग nnoremap <leader><space> :noh<cr>) करने के लिए एक कमांड के साथ जोड़ा
लेनना

24

यदि व्हाट्सएप द्वारा आप '' वर्ण का अर्थ करते हैं, तो मेरा सुझाव सिर्फ एक खोज / प्रतिस्थापन होगा। जैसा कि अन्य लोगों ने संकेत दिया है, गैर-मुद्रण वर्णों को एक दृश्यमान वर्ण में set listपरिवर्तित करता है जिसे कॉन्फ़िगर किया गया है ।listchars

स्पष्ट रूप से कुछ अन्य वर्णों के रूप में रिक्त स्थान दिखाने के लिए, नीचे दिए गए कुछ समान चाल को करना चाहिए:

:%s/ /█/g

तो बस फिर से वापस जाने के लिए परिवर्तन पूर्ववत करें।

(█ मैं इस सटीक कुंजी अनुक्रम दबाया पाने के लिए: :%s/ /CTRL-KFB/g)


2
मुझे अन्य उत्तरों की तुलना में यह बेहतर लगता है, यह :set listमुझे उलटा लगता है, दृश्यमान चरित्र ('स्पेस') को बदलकर _non priting_ (??) से एक जैसा। मुझे आश्चर्य है कि अगर कोई इस तरह मैच के अंदर उपयोग कर सकता है :match MyBlackBlockChar "appropriate_regex, तो उसे यह करना चाहिए, क्या यह नहीं करना चाहिए?
सुधी

अन्य उत्तर उपयोगी हैं, लेकिन यह पहला है जो वास्तव में ओपी के प्रश्न का उत्तर देता है +1
एलेक्सेक्स रोश

1
या :%s/\s/█/gसभी व्हाट्सएप के लिए। इसके अलावा, :set hlsearchप्लस :&s/\s//gnउपयोगी हो सकता है।

16

रिक्त स्थान हाइलाइट करने के लिए, बस इसे खोजें:

/ <अंतरिक्ष>

टिप्पणियाँ:

  • <space> का अर्थ है कि केवल अंतरिक्ष वर्ण लिखें।
  • इसके साथ खोज परिणामों को हाइलाइट करने में सक्षम करें: hlsearch सेट करें

    स्थान और टैब हाइलाइट करने के लिए:

    / [<space> <tab>]

    हाइलाइट्स को हटाने का एक त्वरित तरीका कुछ और की खोज करना है: / asdf

    (बस यादृच्छिक अक्षरों की कोई छोटी सूची टाइप करें)


  • 1
    यह वही है जो उत्तर 3 साल पहले पोस्ट किया गया था। इसके अलावा: नोह unhighlighting पाठ के लिए / asdf से तेज है। या आप f1 को भी सेट कर सकते हैं: noh दिया गया है जिसे आप शायद अक्सर इस्तेमाल कर रहे होंगे।

    @DrEval मान लें कि आप बेनेडिकट कोप्पेल के उत्तर की बात कर रहे हैं, यह वास्तव में अलग-अलग /<space>बनाम है /\s। मुझे लगता है कि यह सुझाव का उपयोग करने के लिए गैर-स्पष्ट और तेज़ है।
    icc97

    14

    नीचे दिया गया कोड क्रिस्चियन ब्रेबेंड के उत्तर पर आधारित है और ऐसा लगता है कि ओपी चाहता है:

    function! Whitespace()
        if !exists('b:ws')
            highlight Conceal ctermbg=NONE ctermfg=240 cterm=NONE guibg=NONE guifg=#585858 gui=NONE
            highlight link Whitespace Conceal
            let b:ws = 1
        endif
    
        syntax clear Whitespace
        syntax match Whitespace / / containedin=ALL conceal cchar=·
        setlocal conceallevel=2 concealcursor=c
    endfunction
    
    augroup Whitespace
        autocmd!
        autocmd BufEnter,WinEnter * call Whitespace()
    augroup END
    

    उन पंक्तियों को अपनी ~/.vimrcओर जोड़िए और अभी भी अपूर्ण जादू देखने के लिए एक नया विम सत्र शुरू करें ।

    डिफ़ॉल्ट रंगों को संपादित करने और चरित्र को छिपाने के लिए स्वतंत्र महसूस करें।


    कैविएट: *FuncBodyकई भाषाओं में वाक्य रचना समूह में कुछ मध्य बिंदु को दिखाने से रोकता है। मुझे नहीं पता (अभी तक?) कैसे उस समाधान को और अधिक विश्वसनीय बनाने के लिए।


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

    @ChristianBrabandt, हाँ, मैं उस चीज़ से आगे नहीं बढ़ सका, जो आपने पहले से ही इसे "स्वचालित" बनाने के लिए किया था।
    रोमेनिल

    1
    हाँ, यह skipwhiteवाक्यविन्यास नियमों में तर्क है, जो वाक्यविन्यास समूह को मिलान करने से रोकता है (हालाँकि इसे सभी समूहों में समाहित करने की अनुमति दी जानी चाहिए)।
    क्रिश्चियन ब्रेबांट

    क्या इंडेंट गाइड्स के साथ इस काम को करने का कोई तरीका है , जो पृष्ठभूमि को इंडेंटेशन से जोड़ता है? मुझे संदेह है कि यह पृष्ठभूमि के रंग को ओवरराइड करने के लिए इसे प्राप्त करने की बात है, लेकिन यह गैर-तुच्छ प्रतीत होता है।
    माइक

    सफेद स्थान को उजागर करने की आवश्यकता नहीं होने पर उसे कैसे निष्क्रिय किया जाए? शॉर्ट टॉगल कमांड के लिए खोज रहे हैं।
    युवासेई

    11

    मैं इस प्रश्न के अन्य सभी उत्तरों से निराश था, क्योंकि उनमें से कोई भी अंतरिक्ष चरित्र को एक उपयोगी तरीके से उजागर नहीं करता था। वर्णों के रूप में रिक्त स्थान दिखाना विशेष रूप से व्हाट्सएप-स्वरूपित भाषाओं के लिए मदद करेगा, जहां टैब और रिक्त स्थान को मिलाना हानिकारक है।

    मेरा समाधान टैब दिखाना और कई स्थानों को रेखांकित करना है। यह mrucci के उत्तर और इस ट्यूटोरियल से उधार लेता है । क्योंकि यह सिंटैक्स हाइलाइटिंग का उपयोग करता है, यह लगातार है:

    set list listchars=tab:\|\ 
    highlight Whitespace cterm=underline gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
    autocmd ColorScheme * highlight Whitespace gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
    match Whitespace /  \+/
    

    इसका उपयोग करके, टैब को |और रिक्त स्थान के रूप में प्रदर्शित किया जाता है _, जो कोड शैलियों को मिलाते समय यह बताना बहुत आसान बनाता है।

    केवल नकारात्मक पहलू यह है कि यह स्निपेट संदर्भ से मेल खाने के लिए पृष्ठभूमि रंग को समायोजित नहीं करता है (जैसे टिप्पणी में)।


    8

    उपरोक्त सभी उत्तर रिक्त स्थान को दृश्यमान बनाने की कोशिश करते हैं। यदि आप वास्तव में डॉट्स के रूप में दिखाई देने वाले स्थानों पर जोर देते हैं, तो एक और दृष्टिकोण है ...

    यदि यह विम में नहीं किया जा सकता है, तो अपने फ़ॉन्ट को पूरी तरह से बदल दें। मैंने उबंटू वन मोनो फ़ॉन्ट की प्रतिलिपि बनाई और इसे FontForge का उपयोग करके संपादित किया। फ़ॉन्ट का पूरा नाम, परिवार, पसंदीदा परिवार, संगत पूर्ण (फ़ॉन्ट जानकारी में यह फ़ॉन्ट जानकारी में TTF नाम के तहत) को बदलने के लिए याद रखें, ताकि यह एक अलग फ़ॉन्ट के रूप में हो। बस बीच में बिंदी लगाने के लिए स्पेस कैरेक्टर को एडिट करें और फॉन्ट को ~ / .fonts में सेव करें। अब आप इसे अपने gvim या पूरे टर्मिनल के लिए उपयोग कर सकते हैं ... मैंने "कॉपी किया!" चरित्र, लाइन को हटा दिया और डॉट को बीच में ले जाया गया। 5 मिनट से थोड़ा अधिक समय लगा ...

    नोट: अंतरिक्ष वर्ण (0x20) को बदलने से संपूर्ण विम स्क्रीन पर डॉट्स होने की असुविधा होती है ... (लेकिन यह टैब से रिक्त स्थान को अलग कर देगा ...)


    2
    यह एक बहुत अच्छा दृष्टिकोण की तरह लग रहा था जब तक कि मैं डॉट्स के साथ पूरी स्क्रीन को भरने के बारे में नोट नहीं पढ़ता। : /
    फ्राइडेरब्लुमेले

    3
    रचनात्मकता के लिए अंक! :-)
    जेपी हॉग १

    7

    मुझे वह नहीं मिला जो मैं मौजूदा उत्तरों से चाहता था। नीचे दिए गए कोड सभी अनुगामी स्थानों को उज्ज्वल लाल पर प्रकाश डालेंगे। बस अपने निम्नलिखित जोड़ें.vimrc

    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()
    

    5
    :match CursorLine /\s\+/
    

    "आप को दिखाने के लिए उन्हें खोजने के लिए रिक्त स्थान की तलाश करनी चाहिए" से बचा जाता है लेकिन रिक्त स्थान के लिए गैर-हिलिंग चीजें करने के लिए afaict को कॉन्फ़िगर नहीं किया जा सकता है। CursorLine किसी भी hilighting group हो सकता है और डिफ़ॉल्ट थीम में यह एक सादा रेखांकन है।


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

    5

    मुझे व्हाट्सएप दिखाने के लिए विशेष पात्रों का उपयोग करना पसंद है, अधिक स्पष्ट है। यहां तक ​​कि एक नक्शा टॉगल करने के लिए एक त्वरित जांच के लिए एक महत्वपूर्ण विशेषता है।

    आप 2004 के बाद से अपडेट नहीं की गई पुरानी vim स्क्रिप्ट में यह सुविधाएँ पा सकते हैं:

    vim-scripts/cream-showinvisibles@vim.org

    Vim - script प्रोजेक्ट करने के लिए धन्यवाद और vundle आप इस प्लगइन के जीवन में वापस आ सकते हैं

    vim-scripts / क्रीम showinvisibles @ GitHub

    इससे भी बेहतर, इस पर मेरे दो सेंट एक कॉन्फ़िगर करने योग्य शॉर्टकट जोड़ना है (पूर्वनिर्धारित के बजाय F4)

    इसलिए इसे ~ / .vimrc में जोड़ें

    Plugin 'albfan/cream-invisibles'
    
    let g:creamInvisibleShortCut = "<F5>" "for my F4 goto next error
    

    विम पर प्लगइन स्थापित करें

    :PluginInstall
    

    और तुम जाओ


    5

    यूनिकोड व्हाट्सएप पात्रों को कवर करने के लिए:

    set list
    set listchars=tab:│\ ,nbsp:·
    highlight StrangeWhitespace guibg=Red ctermbg=Red
    " The list is from https://stackoverflow.com/a/37903645 (with `\t`, `\n`, ` `, `\xa0` removed):
    call matchadd('StrangeWhitespace', '[\x0b\x0c\r\x1c\x1d\x1e\x1f\x85\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]')
    

    परिणाम:

    • केवल ऑर्डिनल स्पेस (U + 0020) एक स्पेस की तरह दिखता है (" ")
    • टैब (U + 0009) "जैसा दिखता है" │ (दो वर्ण: एक लंबा पाइप और फिर एक क्रमिक स्थान; वे ग्रे में हैं colorscheme murphy)
    • सामान्य गैर-ब्रेकिंग स्पेस (U + 00A0) " ·" (एक वर्ण; यह ग्रे है colorscheme murphy) जैसा दिखता है
    • कोई अन्य व्हाट्सएप चरित्र लाल जैसा दिखता है " "

    1
    रंग भरने के लिए मेरे टर्मिनल को बनाने के लिए "ctermbg = Red" को जोड़ने का संपादन किया। व्यक्तिगत रूप से मैंने set listchars=tab:»\ ,space:·आपके संदर्भ के लिए उपयोग किया ।
    जॉनी वोंग

    @ जॉनीवॉन्ग अपडेट के लिए धन्यवाद। इसे शुरू में समीक्षकों द्वारा खारिज कर दिया गया था, लेकिन मैंने कोड की जांच की है, और यह (बिना किसी कारण के) दोनों के लिए काम करता है gvimऔर vim
    किरिल ब्यूलगिन

    1
    शानदार जवाब, यह वही है जो मुझे संकीर्ण गैर-ब्रेक रिक्त स्थान (हेक्स 202 एफ) पर कब्जा करने की आवश्यकता थी जो सफारी और फ़ायरफ़ॉक्स में प्रदान नहीं किए जाते हैं।
    क्रिस कोबर्ज़क

    4

    आप उपयोग कर सकते हैं

    :set list
    

    वास्तव में एक लाइन की संरचना को देखने के लिए। आपको टैब और नए अंक स्पष्ट रूप से दिखाई देंगे। जब आप एक रिक्त देखते हैं, तो यह वास्तव में एक रिक्त होता है।


    3

    हाइलाइट खोज

    :set hlsearch 
    

    में .vimrcवह यह है कि

    और अंतरिक्ष टैब और कैरिज रिटर्न की खोज करें

    / \|\t\|\r
    

    या सभी व्हाट्सएप पात्रों की खोज करें

    /\s
    

    सभी गैर सफेद अंतरिक्ष वर्णों के लिए खोज (व्हाट्सएप वर्ण नहीं दिखाए गए हैं, इसलिए आप शब्दों के बीच व्हाट्सएप वर्ण देखते हैं, लेकिन अनुगामी व्हाट्सएप वर्ण नहीं)

    /\S
    

    लाइन के अंत में सभी अनुगामी सफेद अंतरिक्ष वर्णों को दिखाने के लिए

    /\s$
    

    2

    उन हैक्स को टिप्पणी के रूप में रखें , ताकि शेल में, बस:

    echo '
      " how-to see the non-visible while spaces
      " :set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
      " set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
      " :set list
      " but hei how-to unset the visible tabs ?!
      " :set nolist
      ' >> ~/.vimrc
    

    1
    :se list
    :se nolist
    

    :seपर्याप्त है, :setजरूरत नहीं है


    1

    आप रिक्त स्थान को उजागर कर सकते हैं (रिक्त स्थान को ब्लॉक से बदलकर):

    :%s/ /█/g
    

    (इसे लिखने से पहले)


    1

    इसे मेरे .vimrc में जोड़ना मेरे लिए काम करता है। बस सुनिश्चित करें कि आपके पास कुछ और विरोधी नहीं है ..

    autocmd VimEnter * :syn match space /\s/
    autocmd VimEnter * :hi space ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
    
    हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
    Licensed under cc by-sa 3.0 with attribution required.