Ответы:
С помощью :SyntasticToggleMode
вы можете переключить Syntastic в пассивный режим, который отключит автоматическую проверку. Затем вы можете проверить файл, запустив :SyntasticCheck
вместо него.
Подробнее см. :help syntastic-commands
С другой стороны: если Syntastic медленный, вы можете попробовать эль в качестве альтернативы. В отличие от Syntastic он работает асинхронно, поэтому даже если он медленный, он не должен вам мешать.
:error
или Ctrl + Shift / Alt + e переключает между :SyntasticCheck
и :SyntasticToggleMode
.
:command Sd SyntasticToggleMode
Затем в vi нажмите: Sd, и это отключит синтастику. Подробнее о том, как это сделать, можно узнать здесь: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
silent! nmap <F6> :SyntasticToggleMode<CR>
Я отключил Syntastic по умолчанию и активировал / отключил проверку ошибок со следующим в моем .vimrc:
let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': [],'passive_filetypes': [] }
nnoremap <C-w>E :SyntasticCheck<CR>
Когда мне нужно использовать проверку ошибок, я просто нажимаю: ctrl-w E
.vimrc
. Однако, если я нажму Ctrl-w, E Syntastic появится на секунду и снова исчезнет. Есть идеи, что происходит не так и / или как это отследить?
В качестве альтернативы ответам Джейми и Госпеса можно полностью отключить средство проверки , указав средство проверки следующим образом:
let g:syntastic_html_checkers=['']
Также убедитесь, что syntastic_check_on_open
не установлено значение 1, что будет отменять указанную выше строку:
let g:syntastic_check_on_open = 0
Вы можете отключить 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()
Поскольку это не влияет на другие буферы, я могу продолжать использовать этот замечательный плагин для любых других (частично) совместимых файлов, которые я открывал.
Это напрямую не решает вопрос, но может помочь за пределами текущего сеанса. Если у вас есть файл, который вы должны часто редактировать, но который, как вы знаете, вы всегда захотите отключить 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$']
У меня сработали следующие настройки.
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'}
Другой вариант отключения проверки отдельного буфера (независимо от типа файла) - использовать :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
большом количестве открытых буферов.
Подобно тем, которые упоминались некоторыми другими, вот сегмент 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>
Спасибо Стивену Лу , теперь я могу игнорировать файлы Ansible Roles .
" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']
Я использую 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
С уважением
let g:syntastic_disabled_filetypes=['html']