VIM + Syntastic: bagaimana cara menonaktifkan pemeriksa?

119

Saya menggunakan Syntastic yang diaktifkan untuk file HTML saya. Karena saya memiliki file yang sangat besar dengan checker "validator w3" diaktifkan, GVIM atau VIM menjadi sangat lambat saat menyimpan file (: w).

Apakah mungkin untuk menonaktifkan sintastik sementara hanya untuk sesi saat ini?

Yves Lange
sumber
3
cobalet g:syntastic_disabled_filetypes=['html']
yakiang

Jawaban:

166

Menggunakan :SyntasticToggleModeAnda dapat mengalihkan Syntastic ke mode pasif, yang akan menonaktifkan pemeriksaan otomatis. Anda kemudian dapat memeriksa file dengan menjalankannya :SyntasticCheck.

Untuk lebih lanjut, lihat :help syntastic-commands

Di catatan lain: jika Syntastic lambat untuk Anda pertimbangkan untuk mencoba ale sebagai alternatif. Tidak seperti Syntastic, ini berjalan secara tidak sinkron, jadi meskipun lambat, itu tidak akan menghalangi Anda.

Jamie Schembri
sumber
1
Apakah ada cara untuk membuat satu alias atau memetakan kunci untuk mengaktifkan ini? Yaitu, :erroratau Ctrl + Shift / Alt + e untuk beralih antara :SyntasticCheckdan :SyntasticToggleMode.
yoaquim
2
Anda dapat membuat alias seperti ini di .vimrc: :command Sd SyntasticToggleMode Kemudian di vi tekan: Sd dan ini akan menonaktifkan syntastic. Info lebih lanjut tentang cara melakukannya di sini: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski
2
bagus. inilah pemetaan ke F6 jika seseorang ingin menggunakannyasilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445
88

Saya telah menonaktifkan Syntastic secara default dan mengaktifkan / menonaktifkan pemeriksaan kesalahan dengan yang berikut di .vimrc saya:

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

Ketika saya perlu menggunakan pemeriksaan kesalahan, saya cukup menekan: ctrl-w E

gospes
sumber
Ini cukup berguna, terima kasih .. Saya telah menambahkan ide ke konfigurasi saya. +1
jdt
3
Saya telah menambahkan ini ke saya .vimrcjuga. Namun jika saya menekan Ctrl-w E Syntastic muncul sebentar dan menghilang lagi. Ada ide apa yang salah dan / atau bagaimana cara melacaknya?
Anticom
Saya pikir pemetaan seharusnya tidak memiliki: SyntasticToggleMode <CR>, menghapus itu seharusnya memperbaiki masalah Anda @Anticom.
Achal Dave
@AchalDave Tidak memperbaikinya untuk saya.
Anticom
Hm, tidak tahu. Berikut tampilan pengaturan sintastik saya: github.com/achalddave/dotfiles/blob/…
Achal Dave
33

Alternatif untuk jawaban Jamie dan gospes, seseorang dapat menonaktifkan pemeriksa sepenuhnya dengan menentukan pemeriksa seperti ini:

let g:syntastic_html_checkers=['']

Juga pastikan syntastic_check_on_opentidak disetel ke 1, yang akan melawan baris di atas:

let g:syntastic_check_on_open = 0
chutsu
sumber
10

Anda dapat mematikan Syntastic untuk seluruh sesi (seperti yang dijawab oleh Jamie Schembri ), tetapi jika itu hanya masalah dengan satu "file yang sangat besar", Anda mungkin ingin menonaktifkan satu buffer saja.

Beberapa file yang saya kerjakan di pekerjaan saya sangat tidak sesuai dengan PSR. Kebanyakan bekerja dengan baik. Saya mencari fungsionalitas untuk menonaktifkan Syntastic hanya untuk file masalah itu. Bentuk solusi ' SyntasticDisableToggle ' yang lebih sederhana yang diuraikan oleh kontributor utama berfungsi untuk saya:

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

Karena ini tidak mempengaruhi buffer lain, saya dapat terus menggunakan plugin yang luar biasa ini untuk file lain yang sesuai (sebagian) yang saya buka.

ssteele
sumber
6

Ini tidak secara langsung menjawab pertanyaan, tetapi dapat membantu di luar sesi saat ini. Jika Anda memiliki file yang harus sering Anda edit tetapi Anda tahu bahwa Anda akan selalu ingin menonaktifkan Syntastic (mis. File memiliki ribuan kesalahan dan Anda bermaksud untuk tidak memperbaikinya, dan membiarkannya pada hasil dalam perlambatan UI), kemudian secara permanen membuat daftar hitam sangat nyaman.

Untuk melakukan ini, gunakan syntastic_ignore_filesopsi. Itu tersimpan dalam bantuan, tetapi Anda dapat menggunakan regex dengan fitur ini untuk memasukkan file ke daftar hitam.

                                                    '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$']
Steven Lu
sumber
1
Bekerja dengan baik! Tapi bukan pertanyaan yang ditanyakan. Ini +1 untuk menjadi berguna.
bschlueter
5

Pengaturan berikut berhasil untuk saya.

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'}
koshyg
sumber
4

Opsi lain untuk menonaktifkan pemeriksaan buffer tunggal (apa pun jenis berkasnya) adalah dengan menggunakan :let b:syntastic_mode="passive". Karena ini bukan toggle, ini akan berfungsi bahkan jika buffer saat ini dalam mode pasif.

Jika Anda ingin menonaktifkan pemeriksaan semua jenis file di semua buffer untuk sementara, Anda dapat menggunakan :bufdo let b:syntastic_mode="passive". Saya telah menyiapkan pemetaan untuk menonaktifkan / memeriksa semua buffer:

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

Ini sangat membantu saat melakukan :wqadengan banyak buffer terbuka.

Mark Grimes
sumber
4

Mirip dengan yang disebutkan oleh beberapa orang lain, berikut adalah segmen vimrc yang akan mematikan Syntastic secara default, tetapi memetakan tombol (di sini, F10) untuk memeriksa file saat ini, dan menggunakan tombol yang sama sebagai toggle untuk mematikan pemeriksaan. Ini agak lambat, tapi berhasil.

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>
nothijngrad
sumber
0

Terima kasih untuk Steven Lu , saya bisa mengabaikan file dari Ansible Roles , sekarang.

" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']
Chu-Siang Lai
sumber
0

Saya menggunakan Ale dan Syntastic terutama karena dukungan Rust Ale belum terlalu bagus. Dalam kasus saya, saya menggunakan vim-plug package manager, saya mengatur sehingga tidak akan mengaktifkan semua ini secara otomatis. Saya menggunakan strategi toggle sebagai gantinya.

Dalam kasus saya, saya ingin Ale secara default, dan Syntastic untuk Rust

Di bagian plugin vimrc saya melakukan ini

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

Setelah itu saya menetapkan bind untuk mengaktifkan linter, (saya menggunakan l sebagai mnemoic untuk linter)

nnoremap <leader>l :ALEToggle<CR>

Untuk Rust saya mengganti pengikatan yang sama

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

Juga saya harus menghapus barang-barang statusline dari vimrc saya jika tidak saya mendapatkan kesalahan saat memuatnya dengan Syntastic dinonaktifkan

" 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

Salam

tokek
sumber