जवाबों:
[]अपनी खोज में वर्ण वर्ग में श्रेणी का उपयोग करते हुए , आपको ASCII हेक्साडेसिमल वर्ण श्रेणी को बाहर करने में सक्षम होना चाहिए , इसलिए ASCII सीमा के बाहरhlsearch पड़े अन्य सभी वर्णों को हाइलाइट करना (आपके द्वारा सक्षम होना चाहिए) :
/[^\x00-\x7F]
यह ASCII और ASCII (0-127) के बीच के पात्रों के लिए एक नकारात्मक मैच (के माध्यम से [^]) करेगा, और मेरे सरल परीक्षण में काम करता दिखाई देगा। विस्तारित ASCII के लिए, निश्चित रूप से, उपयोग करने के बजाय सीमा बढ़ाएँ ।0x000x7F\xFF\x7F/[^\x00-\xFF]
आप इसे दशमलव के माध्यम से भी व्यक्त कर सकते हैं \d:
/[^\d0-\d127]
यदि आपको कुछ और विशिष्ट चाहिए, जैसे गैर-मुद्रण योग्य वर्णों का बहिष्करण, तो आपको उन श्रेणियों को वर्ण वर्ग में जोड़ना होगा []।
हां, किसी भी मिलान किए गए तारों के लिए हाइलाइटिंग करने के लिए एक देशी विशेषता है। विम के अंदर, करें:
:help highlight
:help syn-match
syn-matchएक स्ट्रिंग को परिभाषित करता है जो एक समूह में गिरता है।
highlightसमूह द्वारा प्रयुक्त रंग को परिभाषित करता है। सिर्फ़ अपने vimrc फ़ाइलों के लिए सिंटैक्स हाइलाइटिंग के बारे में सोचें।
तो आप अपने .vimrc फ़ाइल में कमांड का उपयोग कर सकते हैं:
syntax match nonascii "[^\x00-\x7F]"
highlight nonascii guibg=Red ctermbg=2
:अपने vimrc में आदेशों के सामने रखने की आवश्यकता नहीं है ।
termbgVIM 7.3 में उबंटू सर्वर 12.10 पर स्थापित के रूप में एक कानूनी आदेश प्रतीत नहीं होता है।
termbgVIM 7.3 में उबंटू सर्वर 12.10 पर स्थापित होने का कानूनी पैरामीटर नहीं लगता है।
termमें पृष्ठभूमि रंग नहीं हो सकता है, जबकि रंग टर्मिनल ctermहो सकता है।
अन्य के लिए (अब कम अशुभ से) लोग एक खोज इंजन के माध्यम से यहाँ समाप्त होते हैं और गैर-ASCII वर्णों को उजागर नहीं कर सकते हैं, इसे आज़माएं (इसे अपने .vimrc में डालें):
highlight nonascii guibg=Red ctermbg=1 term=standout
au BufReadPost * syntax match nonascii "[^\u0000-\u007F]"
यह नियमित रूप से नहीं टकराने का अतिरिक्त लाभ है (फ़ाइल एक्सटेंशन [फ़ाइल एक्सटेंशन] आधारित) वाक्यविन्यास परिभाषाएँ।
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continueलिनक्स मिंट 17.3
containedin=ALLअंतिम पंक्ति के अंत में जोड़ सकते हैं , तो इसे बना सकते हैं au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL। मैं इसके लायक व्याकुलता पाता हूं (जब यूनिकोड की अनुमति दी जाती है), तो यहां मूल जवाब एक बयान के अंदर गैर- if
autocmd BufRead ....जब तक आपके पास एक बहुत अच्छा कारण नहीं है, तब तक यह हमेशा आपके लिए एक ऑटोग्रुप में शामिल करने के लिए सुरक्षित होता है ...
यह रेगेक्स भी काम करता है। यह briceolion.com से "vim remove non-ascii characters" के लिए पहला Google हिट था और इसके साथ :set hlsearchहाइलाइट होगा:
/[^[:alnum:][:punct:][:space:]]/
:%s/[^[:alnum:][:punct:][:space:]]//gcजो पहले हाइलाइट किया गया था , फिर बदल दिया गया।
यदि आप गैर-मुद्रण योग्य वर्णों में भी रुचि रखते हैं तो इसका उपयोग करें:/[^\x00-\xff]/
मैं इसे एक फ़ंक्शन में उपयोग करता हूं:
function! NonPrintable()
setlocal enc=utf8
if search('[^\x00-\xff]') != 0
call matchadd('Error', '[^\x00-\xff]')
echo 'Non printable characters in text'
else
setlocal enc=latin1
echo 'All characters are printable'
endif
endfunction
encकरने के लिए fenc। मैंने एन्कोडिंग को बदल दिया क्योंकि मेरी डिफ़ॉल्ट एन्कोडिंग है (2013 में) latin1। यदि वर्ण लैटिन 1 है तो फ़ंक्शन गैर मुद्रण योग्य वर्णों को उजागर नहीं करता है। आप ERRORअपने रंग सिंटैक्स फ़ाइल में कुंजी होना चाहिए पर प्रकाश डाला देखें । यह मेरा है:hi Error guifg=Black guibg=Orange
इस विषय पर अन्य उत्तरों और मेरे द्वारा यहां दिए गए उत्तर के आधार पर मैंने इसे अपने साथ जोड़ा है .vimrc, ताकि मैं टाइप करके गैर-अस्की हाइलाइटिंग को नियंत्रित कर सकूं <C-w>1। यह टिप्पणियों के अंदर भी दिखाता है, हालांकि आपको प्रत्येक फ़ाइल सिंटैक्स के लिए टिप्पणी समूह को जोड़ना होगा जो आप उपयोग करेंगे। यही है, यदि आप एक zsh फ़ाइल को संपादित करेंगे, तो आपको zshCommentलाइन में जोड़ना होगा
au BufReadPost * syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment,pythonComment
अन्यथा यह गैर-असिसी चरित्र नहीं दिखाएगा (आप सभी समूहों में गैर-अस्की चरित्र दिखाना सुनिश्चित करना चाहते हैं, तो आप इन्टिन = सभी को भी सेट कर सकते हैं)। यह जांचने के लिए कि टिप्पणी को किसी भिन्न फ़ाइल प्रकार पर कैसे कॉल किया जाता है, वांछित प्रकार की फ़ाइल खोलें और :syविम पर दर्ज करें , फिर टिप्पणी के लिए सिंटैक्स आइटम खोजें।
function HighlightNonAsciiOff()
echom "Setting non-ascii highlight off"
syn clear nonascii
let g:is_non_ascii_on=0
augroup HighlightUnicode
autocmd!
augroup end
endfunction
function HighlightNonAsciiOn()
echom "Setting non-ascii highlight on"
augroup HighlightUnicode
autocmd!
autocmd ColorScheme *
\ syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment,pythonComment |
\ highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
augroup end
silent doautocmd HighlightUnicode ColorScheme
let g:is_non_ascii_on=1
endfunction
function ToggleHighlightNonascii()
if g:is_non_ascii_on == 1
call HighlightNonAsciiOff()
else
call HighlightNonAsciiOn()
endif
endfunction
silent! call HighlightNonAsciiOn()
nnoremap <C-w>1 :call ToggleHighlightNonascii()<CR>
किसी भी तरह उपरोक्त जवाबों में से कोई भी मेरे लिए काम नहीं किया।
इसलिए मैंने इस्तेमाल किया :1,$ s/[^0-9a-zA-Z,-_\.]//g
यह उन अधिकांश पात्रों को रखता है जिनकी मुझे दिलचस्पी है।
किसी ने पहले ही सवाल का जवाब दिया है। हालाँकि, जिन लोगों को अभी भी समस्या हो रही है, उनके लिए टिप्पणियों (या मामले में किसी भी वाक्यविन्यास समूह) में गैर-अस्की चरित्रों को उजागर करने का एक और समाधान है। यह सबसे अच्छा नहीं है, लेकिन यह एक अस्थायी सुधार है।
एक कोशिश कर सकते हैं:
:syntax match nonascii "[^\u0000-\u007F]" containedin=ALL contained |
\ highlight nonascii ctermfg=yellow guifg=yellow
इसमें अन्य समाधानों से मिश्रित भाग हैं। आप हटा सकते हैं contained, लेकिन, दस्तावेज़ीकरण से, अपने आप को फिर से शुरू करने की संभावित समस्या हो सकती है (जैसा कि मैं समझता हूं)। अन्य परिभाषित पैटर्न देखने के लिए, syn-containsअनुभाग में यह होगा।
:help syn-containedin
:help syn-contains
से पुनर्प्राप्त समस्या: आइटम को उच्च हाइलाइट प्राथमिकता पर सेट करें
/[^\d0-\d127]