VIM + Syntastic: как отключить чекер?

Я использую Syntastic, который включен для моих файлов HTML. Поскольку у меня есть очень большой файл с включенными средствами проверки "validator w3", GVIM или VIM стали очень медленными при сохранении файла (:w).

Можно ли временно отключить синтаксис только для текущего сеанса?


person Yves Lange    schedule 17.11.2013    source источник
comment
попробуй let g:syntastic_disabled_filetypes=['html']   -  person yakiang    schedule 17.11.2013


Ответы (10)


Используя :SyntasticToggleMode, вы можете переключить Syntastic в пассивный режим, который отключит автоматическую проверку. Затем вы можете проверить файл, запустив вместо этого :SyntasticCheck.

Подробнее см. :help syntastic-commands

Еще одно замечание: если Syntastic для вас медленный, подумайте о том, чтобы попробовать ale в качестве альтернативы. В отличие от Syntastic, он работает асинхронно, поэтому, даже если он медленный, он не должен вам мешать.

person Jamie Schembri    schedule 17.11.2013
comment
Есть ли способ создать один псевдоним или сопоставить ключ, чтобы переключить это? То есть :error или Ctrl+Shift/Alt+e переключает между :SyntasticCheck и :SyntasticToggleMode. - person cintron; 09.02.2015
comment
Вы можете создать такой псевдоним в .vimrc: :command Sd SyntasticToggleMode Затем в vi нажмите :Sd и он отключит синтаксис. Подробнее о том, как это сделать, здесь: stackoverflow.com/ вопросы/3878692/псевдоним команды в vim - person Eric Leschinski; 27.05.2015
comment
Ницца. вот сопоставление с F6, если кто-то хочет его использовать silent! nmap <F6> :SyntasticToggleMode<CR> - person lfender6445; 26.05.2016

Я отключил Syntastic по умолчанию и активировал/отключил проверку ошибок с помощью следующего в моем .vimrc:

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

Когда мне нужно использовать проверку ошибок, я просто нажимаю: ctrl-w E

person gospes    schedule 29.01.2014
comment
Это очень удобно, спасибо.. Я добавил идею в свой конфиг. +1 - person jdt; 17.04.2014
comment
Я также добавил это в свой .vimrc. Однако, если я нажму Ctrl-w E, Syntastic появится на секунду и снова исчезнет. Любые идеи, что происходит не так и/или как это отследить? - person Anticom; 27.11.2015
comment
Я думаю, что в сопоставлении не должно быть :SyntasticToggleMode‹CR›, удаление которого должно решить вашу проблему @Anticom. - person Achal Dave; 26.02.2016
comment
@AchalDave Мне это не помогло. - person Anticom; 26.02.2016
comment
Хм, без понятия. Вот как выглядят мои синтастические настройки: /блоб/ - person Achal Dave; 26.02.2016

В качестве альтернативы ответам Jamie и gospes можно полностью отключить средство проверки, указав средство проверки следующим образом:

let g:syntastic_html_checkers=['']

Также убедитесь, что для syntastic_check_on_open не установлено значение 1, что приведет к отмене приведенной выше строки:

let g:syntastic_check_on_open = 0
person chutsu    schedule 16.04.2014

Вы можете отключить Syntastic для всего сеанса (как ответил Джейми Шембри), но если это просто проблема с одним «очень большой файл», вы можете отключить только один буфер.

Несколько файлов, над которыми я работаю, безнадежно несовместимы с PSR. Большинство работает нормально. Я искал функциональность для отключения 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()

Поскольку это не влияет на другие буферы, я могу продолжать использовать этот замечательный плагин для любых других (частично) совместимых файлов, которые у меня открыты.

person ssteele    schedule 18.04.2016

Это не решает вопрос напрямую, но может помочь за пределами текущего сеанса. Если у вас есть файл, который вы должны часто редактировать, но вы знаете, что всегда будете хотеть отключить Syntastic (например, в нем тысячи ошибок, и вы не собираетесь их исправлять, а оставить его включенным приводит к замедлению пользовательского интерфейса), то навсегда черный список это очень удобно.

Для этого используйте опцию syntastic_ignore_files. Он спрятан в справке, но вы можете использовать регулярные выражения с этой функцией для внесения файлов в черный список.

                                                    '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$']
person Steven Lu    schedule 30.09.2015
comment
Работает отлично! Хотя вопрос был не о том. Вот +1 за полезность. - person bschlueter; 11.05.2016
comment
Спасибо, я использовал это, чтобы предотвратить проверку временных файлов bash при редактировании командных строк с помощью C-X C-E: let g:syntastic_ignore_files = ['\m^/tmp/bash-.*'] - person Anthony Geoghegan; 25.10.2020

Следующие настройки работали для меня.

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'}
person koshyg    schedule 01.12.2015

Подобно тем, которые упоминались некоторыми другими, вот сегмент vimrc, который отключит Syntastic по умолчанию, но сопоставляет кнопку (здесь 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>
person nothijngrad    schedule 02.04.2018

Другой вариант отключить проверку отдельного буфера (независимо от типа файла) — использовать :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 с большим количеством открытых буферов.

person Mark Grimes    schedule 19.01.2016

Спасибо за Стивен Лу, теперь я могу игнорировать файлы Ansible Roles.

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

Я использую Ale и Syntastic в основном потому, что поддержка Rust Ale пока не очень хороша. В моем случае я использую диспетчер пакетов vim-plug, я настраиваю его так, чтобы он не включал ничего из этого автоматически. Вместо этого я использую стратегию переключения.

В моем случае я хочу Ale по умолчанию и Syntastic для Rust.

В части плагина vimrc я сделал это

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

После этого я установил привязку, чтобы включить линтер (я использую l как мнемосхему для линтера).

nnoremap <leader>l :ALEToggle<CR>

Для Rust я переопределяю ту же привязку

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

Также мне пришлось удалить материал строки состояния из моего vimrc, иначе я получаю ошибки при загрузке с отключенным Syntastic.

" 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

С Уважением

person geckos    schedule 29.03.2020