VIM + Syntastic: як відключити шашку?


119

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

Чи можливо вимкнути синтастичний вигляд тимчасово лише для поточного сеансу?


3
спробуйтеlet g:syntastic_disabled_filetypes=['html']
yakiang

Відповіді:


166

Використовуючи :SyntasticToggleModeви можете перевести Syntastic в пасивний режим, що вимкне автоматичну перевірку. Потім ви можете перевірити файл, запустивши :SyntasticCheckнатомість.

Детальніше див :help syntastic-commands

Ще одна примітка: якщо Syntastic повільний, ви розглядаєте спробу ale як альтернативу. На відміну від Syntastic, він працює асинхронно, тому навіть якщо це повільно, він не повинен вам заважати.


1
Чи є спосіб створити єдиний псевдонім або зіставити ключ, щоб переключити це? Тобто, :errorабо Ctrl + Shift / Alt + e перемикається між :SyntasticCheckі :SyntasticToggleMode.
йоакім

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


Це дуже зручно, дякую .. Я додав ідею до свого конфігурації. +1
jdt

3
Я додав це до свого .vimrcтакож. Однак якщо я натискаю Ctrl-w E Syntastic з'являється на секунду і зникає знову. Будь-які ідеї, що йде не так і / або як це відстежувати?
Антиком

Я думаю, що у картографії не повинно бути: SyntasticToggleMode <CR>, видалення це повинно вирішити вашу проблему @Anticom.
Ахал Дейв

@AchalDave не виправив це для мене.
Anticom

Гм, ідеї немає. Ось як виглядають мої синтастичні налаштування: github.com/achalddave/dotfiles/blob/…
Achal Dave

33

Альтернативні відповіді Джеймі та Євангелія, можна повністю відключити шашку , вказавши так:

let g:syntastic_html_checkers=['']

Також переконайтеся, що для параметра " syntastic_check_on_openНе встановлено значення 1", що буде протирікати вищевказаному рядку:

let g:syntastic_check_on_open = 0

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

Оскільки це не впливає на інші буфери, я можу продовжувати використовувати цей дивовижний плагін для будь-яких інших (частково) сумісних файлів, які я відкрив.


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'}

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>


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>

Для Іржі я перекриваю ту саму прив'язку

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

З повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.