VIM + Syntastic: denetleyici nasıl devre dışı bırakılır?


119

HTML dosyalarım için etkin olan Syntastic kullanıyorum. "Doğrulayıcı w3" denetleyicileri etkinleştirilmiş çok büyük bir dosyam olduğundan, GVIM veya VIM, dosyayı kaydederken çok yavaşladı (: w).

Sadece mevcut oturum için geçici olarak sözdizimini kapatmak mümkün mü?


3
deneyinlet g:syntastic_disabled_filetypes=['html']
yakiang

Yanıtlar:


166

Kullanarak :SyntasticToggleModeSyntastic'i pasif moda geçirebilir, bu da otomatik denetimi devre dışı bırakır. Daha sonra bir dosyayı çalıştırarak kontrol edebilirsiniz :SyntasticCheck.

Daha fazlası için bkz. :help syntastic-commands

Bir başka not: Syntastic yavaş olup olmadığını çalıştığınız düşünün için ale alternatif olarak. Syntastic'in aksine, eşzamansız olarak çalışır, bu nedenle yavaş olsa bile sizi engellememelidir.


1
Tek bir takma ad oluşturmanın veya bunu değiştirmek için bir anahtar eşlemenin herhangi bir yolu var mı? Ie :errorveya Ctrl + Shift / Alt + e, :SyntasticCheckve arasında geçiş yapar :SyntasticToggleMode.
yoaquim

2
:command Sd SyntasticToggleMode .Vimrc'de bunun gibi bir takma ad oluşturabilirsiniz: Sonra vi'de: Sd'ye basın ve sözdizimi devre dışı bırakacaktır. Bunun nasıl yapılacağı hakkında daha fazla bilgiyi burada bulabilirsiniz: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski

2
Güzel. Bu, birisi kullanmak isterse F6'ya bir eşlemesilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445

88

Syntastic'i varsayılan olarak devre dışı bıraktım ve .vimrc dosyamda aşağıdakilerle hata denetimini etkinleştirdim / devre dışı bıraktım:

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

Hata kontrolünü kullanmam gerektiğinde basitçe şuna basıyorum : ctrl-w E


Bu oldukça kullanışlı, teşekkürler .. Fikrimi yapılandırmama ekledim. +1
jdt

3
Bunu ben de ekledim .vimrc. Ancak Ctrl-w E'ye basarsam Syntastic bir saniyeliğine açılır ve tekrar kaybolur. Neyin yanlış gittiğine ve / veya bunun nasıl izleneceğine dair bir fikriniz var mı?
Anticom

Eşlemenin sahip olmaması gerektiğini düşünüyorum: SyntasticToggleMode <CR>, bunun kaldırılması sorununuzu @Anticom düzeltmelidir.
Achal Dave

@AchalDave benim için düzeltmedi.
Anticom

Hm, hiçbir fikrim yok. Söz dizimi ayarlarım şöyle görünüyor: github.com/achalddave/dotfiles/blob/…
Achal Dave

33

Jamie ve gospes cevaplarına alternatif olarak, pulu şu şekilde belirterek pulu tamamen devre dışı bırakabilirsiniz :

let g:syntastic_html_checkers=['']

Ayrıca syntastic_check_on_open, 1'e ayarlanmadığından emin olun , bu da yukarıdaki satırı karşılar:

let g:syntastic_check_on_open = 0

10

Tüm oturum için Syntastic'i kapatabilirsiniz ( Jamie Schembri tarafından yanıtlandığı gibi ), ancak bu yalnızca "çok büyük dosya" ile ilgili bir sorunsa, yalnızca bir arabelleği devre dışı bırakmak isteyebilirsiniz.

İşimde üzerinde çalıştığım dosyalardan birkaçı umutsuzca PSR uyumlu değil. Çoğu iş gayet iyi. Syntastic'i sadece bu sorunlu dosyalar için devre dışı bırakacak işlevsellik arıyordum. Birincil katılımcı tarafından özetlenen ' SyntasticDisableToggle ' çözümünün daha basit bir biçimi benim için çalışıyor:

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

Bu diğer arabellekleri etkilemediğinden, bu harika eklentiyi açtığım diğer (kısmen) uyumlu dosyalar için kullanmaya devam edebilirim.


6

Bu, soruyu doğrudan ele almaz, ancak mevcut oturumun ötesinde yardımcı olabilir. Sık sık düzenlemeniz gereken, ancak Syntastic'i her zaman devre dışı bırakmak isteyeceğinizi bildiğiniz bir dosyanız varsa (örneğin, binlerce hata içeriyor ve bunları düzeltmemeyi ve kullanıcı arayüzünün yavaşlamasına neden olacak sonuçlarda bırakmayı planlıyorsanız), sonra kalıcı olarak kara listeye almak çok uygundur.

Bunu yapmak için syntastic_ignore_filesseçeneği kullanın. Yardımda gizlenmiştir, ancak dosyaları kara listeye almak için bu özellikle normal ifadeleri kullanabilirsiniz.

                                                    '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
Harika çalışıyor! Yine de sorunun sorduğu şey değil. İşte yararlı olmanın bir +1.
bschlueter

5

Aşağıdaki ayarlar benim için çalıştı.

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

Tek bir arabelleği denetlemeyi kapatmak için başka bir seçenek (dosya türünden bağımsız olarak) kullanmaktır :let b:syntastic_mode="passive". Geçiş olmadığından, arabellek şu anda pasif modda olsa bile çalışacaktır.

Tüm arabelleklerdeki tüm dosya türlerinin denetimini geçici olarak kapatmak istiyorsanız, kullanabilirsiniz :bufdo let b:syntastic_mode="passive". Tüm arabellekleri kontrol etmek / kapatmak için kurulum eşlemelerim var:

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

Bu, özellikle :wqaçok sayıda açık tamponla çalışırken faydalıdır .


4

Birkaç başkası tarafından bahsedilenlere benzer şekilde, işte Syntastic'i varsayılan olarak kapatacak bir vimrc segmenti var, ancak geçerli dosyayı kontrol etmek için bir düğmeyi (burada, F10) eşliyor ve kontrolleri kapatmak için bir geçiş olarak aynı düğmeyi kullanıyor. Biraz yavaş ama işe yarıyor.

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

Steven Lu için teşekkürler , Ansible Roles dosyalarını artık görmezden gelebilirim .

" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']

0

Ale ve Syntastic'i kullanıyorum çünkü Rust Ale desteği henüz çok iyi değil. Benim durumumda vim-plug paket yöneticisi kullanıyorum, bunların hiçbirini otomatik olarak etkinleştirmeyecek şekilde kuruyorum. Bunun yerine bir geçiş stratejisi kullanıyorum.

Benim durumumda varsayılan olarak Ale'yi ve Rust için Syntastic'i istiyorum

Vimrc'nin eklenti kısmında bunu yaptım

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

Daha sonra linter'i etkinleştirmek için bir bağlama ayarladım (linter için mnemoic olarak l kullanıyorum)

nnoremap <leader>l :ALEToggle<CR>

Rust için aynı bağı geçersiz kılıyorum

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

Ayrıca durum satırı öğelerini vimrc'imden kaldırmak zorunda kaldım, aksi takdirde Syntastic devre dışıyken yüklerken hata alıyorum

" 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

Saygılarımızla

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.