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

119

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

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

Ив Ланге
источник
3
trylet g:syntastic_disabled_filetypes=['html']
yakiang

Ответы:

166

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

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

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

Джейми Шембри
источник
1
Есть ли способ создать единственный псевдоним или сопоставить ключ для переключения этого параметра? Т.е. :errorили Ctrl + Shift / Alt + e переключает между :SyntasticCheckи :SyntasticToggleMode.
yoaquim
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

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

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

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

gospes
источник
Это очень удобно, спасибо .. Я добавил идею в свой конфиг. +1
jdt
3
Я добавил это к себе .vimrc. Однако, если я нажму Ctrl-w, E Syntastic появится на секунду и снова исчезнет. Есть идеи, что происходит не так и / или как это отследить?
Anticom
Я думаю, что сопоставление не должно иметь: SyntasticToggleMode <CR>, удаление этого должно исправить вашу проблему @Anticom.
Ахал Дэйв,
@AchalDave Не исправил для меня.
Anticom
Хм, понятия не имею. Вот как выглядят мои синтастические настройки: github.com/achalddave/dotfiles/blob/…
Ахал Дэйв,
33

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

let g:syntastic_html_checkers=['']

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

let g:syntastic_check_on_open = 0
chutsu
источник
10

Вы можете отключить 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()

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

ssteele
источник
6

Это напрямую не решает вопрос, но может помочь за пределами текущего сеанса. Если у вас есть файл, который вы должны часто редактировать, но который, как вы знаете, вы всегда захотите отключить 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$']
Стивен Лу
источник
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'}
koshyg
источник
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, который по умолчанию отключает 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>
nothijngrad
источник
0

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

" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']
Чу-Сян Лай
источник
0

Я использую 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

С уважением

гекконы
источник