Відповіді:
Використовуючи :SyntasticToggleMode
ви можете перевести Syntastic в пасивний режим, що вимкне автоматичну перевірку. Потім ви можете перевірити файл, запустивши :SyntasticCheck
натомість.
Детальніше див :help syntastic-commands
Ще одна примітка: якщо Syntastic повільний, ви розглядаєте спробу ale як альтернативу. На відміну від 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>
Для Іржі я перекриваю ту саму прив'язку
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']