VIM + सिंथेटिक: चेकर को निष्क्रिय कैसे करें?


119

मैं Syntastic का उपयोग कर रहा हूँ जो मेरी HTML फ़ाइलों के लिए सक्षम है। चूँकि मेरे पास "सत्यापनकर्ता w3" चेकर्स सक्षम होने के साथ एक बहुत बड़ी फ़ाइल है, फ़ाइल सहेजते समय GVIM या VIM बहुत धीमी हो गई: (w)।

क्या वर्तमान सत्र के लिए अस्थायी रूप से सिंटैस्टिक को टॉगल करना संभव है?


3
कोशिशlet g:syntastic_disabled_filetypes=['html']
याकियांग

जवाबों:


166

उपयोग करने से :SyntasticToggleModeआप सिंथेटिक मोड को निष्क्रिय मोड में टॉगल कर सकते हैं, जो ऑटो-चेकिंग को अक्षम कर देगा। आप :SyntasticCheckइसके बजाय चलाकर किसी फ़ाइल की जाँच कर सकते हैं ।

अधिक के लिए, देखें :help syntastic-commands

एक और नोट पर: यदि सिंथेटिक आपके लिए धीमा है, तो विकल्प के रूप में एले की कोशिश करने पर विचार करें । सिंथेटिक के विपरीत, यह अतुल्यकालिक रूप से चलता है, इसलिए भले ही यह धीमा हो यह आपको बाधा नहीं देनी चाहिए।


1
क्या कोई एकल उपनाम बनाने या इसे टॉगल करने के लिए एक कुंजी बनाने का कोई तरीका है? Ie, :errorया Ctrl + Shift / Alt + e के बीच :SyntasticCheckऔर टॉगल करें :SyntasticToggleMode
योआखिम

2
आप इस तरह से एक उपनाम बना सकते हैं .vimrc: :command Sd SyntasticToggleMode फिर vi प्रेस में: Sd और यह सिंटैस्टिक को निष्क्रिय कर देगा। इस बारे में अधिक जानकारी कि यहाँ कैसे करें: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
एरिक लेसचिंस्की

2
अच्छा। अगर कोई इसका इस्तेमाल करना चाहता है तो F6 को मैपिंग करनाsilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445

88

मैंने अपने .vimrc में निम्नलिखित के साथ डिफ़ॉल्ट रूप से सिन्थैटिक को डिफॉल्ट और सक्रिय / अक्षम किया है।

let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': [],'passive_filetypes': [] }
nnoremap <C-w>E :SyntasticCheck<CR>

जब मुझे त्रुटि की जांच करने की आवश्यकता होती है तो मैं बस हिट करता हूं: ctrl-w E


यह काफी आसान है, धन्यवाद .. मैंने अपने कॉन्फ़िगरेशन में विचार जोड़ दिया है। +1
jdt

3
मैंने इसे अपनी .vimrcअस्वस्थता से जोड़ा है । हालाँकि, अगर मैं Ctrl-w E Syntastic को दूसरी बार दबाता हूँ और फिर से गायब हो जाता है। किसी भी विचार क्या गलत हो रहा है और / या यह कैसे नीचे ट्रैक करने के लिए?
7

मुझे लगता है कि मैपिंग में ऐसा नहीं होना चाहिए: SyntasticToggleMode <CR>, जो आपके मुद्दे को @Anticom को ठीक करना चाहिए।
अचल दवे

@AchalDave ने मेरे लिए इसे ठीक नहीं किया।
एंटीक

हम्म, कोई विचार नहीं। यहाँ मेरी सिंटैस्टिक सेटिंग्स कैसी दिखती हैं: github.com/achalddave/dotfiles/blob/…
अचल

33

जेमी के लिए वैकल्पिक और जवाब, एक व्यक्ति को पूरी तरह से चेकर निर्दिष्ट करके अक्षम कर सकता है जैसे:

let g:syntastic_html_checkers=['']

यह भी सुनिश्चित करें कि syntastic_check_on_open1 पर सेट नहीं किया गया है, जो उपरोक्त पंक्ति का प्रतिकार करेगा:

let g:syntastic_check_on_open = 0

10

आप पूरे सत्र के लिए Syntastic को बंद कर सकते हैं (जैसा कि जेमी स्कीब्री द्वारा उत्तर दिया गया है ), लेकिन यदि यह केवल "बहुत बड़ी फ़ाइल" के साथ एक समस्या है, तो आप बस एक बफर को निष्क्रिय करना चाह सकते हैं।

अपनी नौकरी पर काम करने वाली कुछ फाइलें आशातीत रूप से गैर-पीएसआर अनुपालन हैं। ज्यादातर ठीक काम करते हैं। मैं सिर्फ उन समस्या फ़ाइलों के लिए सिंथेटिक को अक्षम करने के लिए कार्यक्षमता की तलाश कर रहा था। मेरे लिए प्राथमिक योगदानकर्ता द्वारा उल्लिखित ' SyntasticDisableToggle ' समाधान का एक सरल रूप :

"disable syntastic on a per buffer basis (some work files blow it up)
function! SyntasticDisableBuffer()
    let b:syntastic_skip_checks = 1
    SyntasticReset
    echo 'Syntastic disabled for this buffer'
endfunction

command! SyntasticDisableBuffer call SyntasticDisableBuffer()

क्योंकि यह अन्य बफ़र्स को प्रभावित नहीं करता है, मैं इस भयानक प्लगइन का उपयोग किसी भी अन्य (आंशिक रूप से) आज्ञाकारी फाइलों के लिए कर सकता हूं जो मेरे पास हैं।


6

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

ऐसा करने के लिए, syntastic_ignore_filesविकल्प का उपयोग करें । यह मदद में टिक गया है, लेकिन आप इस सुविधा के साथ regexes का उपयोग फ़ाइलों को ब्लैकलिस्ट करने के लिए कर सकते हैं।

                                                    'syntastic_ignore_files'
Default: []
Use this option to specify files that syntastic should never check.  It's a
list of regular-expression patterns.  The full paths of files (see ::p) are
matched against these patterns, and the matches are case sensitive. Use \c
to specify case insensitive patterns.  Example:
    let g:syntastic_ignore_files = ['\m^/usr/include/', '\m\c\.h$']

1
बहुत अच्छा काम करता है! नहीं, हालांकि सवाल पूछ रहा था। यहां उपयोगी होने के लिए +1 है।
bschlueter

5

निम्नलिखित सेटिंग्स ने मेरे लिए काम किया।

let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes':   [],'passive_filetypes': [] }
noremap <C-w>e :SyntasticCheck<CR>
noremap <C-w>f :SyntasticToggleMode<CR>

Ctrl-w + e shall enable checking
Ctrl-w + f shall disable checking 

To disable warnings use: 
let g:syntastic_quiet_messages={'level':'warnings'}

4

एकल बफर के लिए जाँच बंद करने का दूसरा विकल्प (फ़िलाइटाइप की परवाह किए बिना) उपयोग करना है :let b:syntastic_mode="passive"। चूंकि यह टॉगल नहीं है, यह तब भी काम करेगा जब बफर वर्तमान में निष्क्रिय मोड में है।

यदि आप अस्थायी रूप से सभी बफ़र में सभी फ़िलेपेट की जाँच बंद करना चाहते हैं, तो आप उपयोग कर सकते हैं :bufdo let b:syntastic_mode="passive"। मेरे पास सभी बफ़र्स की जाँच बंद / चालू करने के लिए सेटअप मैपिंग है:

nnoremap <leader>sN :bufdo let b:syntastic_mode="passive"<cr>
nnoremap <leader>sY :bufdo unlet b:syntastic_mode<cr>

:wqaबहुत सारे खुले बफ़र्स के साथ करते समय यह विशेष रूप से सहायक होता है ।


4

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

let g:syntastic_check_on_open = 0                                                                                 
let g:syntastic_check_on_wq = 0
let g:syntastic_mode_map = {'mode':'passive'}
nnoremap <F10> :SyntasticCheck<CR> :SyntasticToggleMode<CR> :w<CR>


0

मैं मुख्य रूप से Ale और Syntastic का उपयोग कर रहा हूँ क्योंकि Rust Ale का समर्थन अभी बहुत अच्छा नहीं है। मेरे मामले में मैं विम-प्लग पैकेज मैनेजर का उपयोग कर रहा हूं, मैं सेटअप करता हूं ताकि यह इनमें से किसी को भी स्वचालित रूप से सक्षम न करे। मैं इसके बजाय टॉगल रणनीति का उपयोग करता हूं।

मेरे मामले में मैं डिफ़ॉल्ट रूप से एएलटी चाहता हूं, और जंग के लिए सिंथेटिक

Vimrc के प्लगइन भाग में मैंने यह किया है

Plug 'w0rp/ale', { 'on': 'ALEToggle' }
Plug 'vim-syntastic/syntastic', { 'on': 'SyntasticToggleMode' }

बाद में मैंने लिंटर को सक्षम करने के लिए एक बाइंड सेट किया, (मैं लिंटर के लिए mnemoic के रूप में उपयोग करता हूं)

nnoremap <leader>l :ALEToggle<CR>

जंग के लिए मैं एक ही बंधन को ओवरराइड करता हूं

au FileType rust noremap <buffer> <leader>l :SyntasticToggleMode<CR>

इसके अलावा मुझे अपने vimrc से स्टेटसलाइन सामान को निकालना था अन्यथा मुझे सिंथेटिक अक्षम के साथ लोड करते समय त्रुटियां मिलती हैं

" Syntastic stuff
"set statusline+=%#warningmsg#
"set statusline+=%{SyntasticStatuslineFlag()}
"set statusline+=%*

let g:rustfmt_autosave = 1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
" Syntastic stuff

सादर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.