VIM + Syntastic: jak wyłączyć sprawdzanie?


119

Używam Syntastic, który jest włączony dla moich plików HTML. Ponieważ mam bardzo duży plik z włączonymi kontrolerami "validator w3", GVIM lub VIM bardzo powoli zapisywał plik (: w).

Czy można tymczasowo wyłączyć syntastic tylko dla bieżącej sesji?


3
spróbujlet g:syntastic_disabled_filetypes=['html']
yakiang

Odpowiedzi:


166

Za pomocą :SyntasticToggleModeyou możesz przełączyć Syntastic w tryb pasywny, co spowoduje wyłączenie automatycznego sprawdzania. Następnie możesz sprawdzić plik, uruchamiając :SyntasticCheckzamiast tego.

Po więcej, zobacz :help syntastic-commands

Z drugiej strony: jeśli Syntastic działa wolno, rozważ wypróbowanie piwa jako alternatywy. W przeciwieństwie do Syntastic działa asynchronicznie, więc nawet jeśli jest wolny, nie powinien ci przeszkadzać.


1
Czy istnieje sposób na utworzenie pojedynczego aliasu lub zmapowanie klucza, aby to przełączyć? Tj. :errorLub Ctrl + Shift / Alt + e przełącza między :SyntasticChecki :SyntasticToggleMode.
yoaquim

2
Możesz stworzyć taki alias w .vimrc: :command Sd SyntasticToggleMode Następnie w vi naciśnij: Sd i wyłączy to syntastic. Więcej informacji o tym, jak to zrobić, znajdziesz tutaj: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski

2
miły. oto mapowanie do F6, jeśli ktoś chce go użyćsilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445

88

Domyślnie wyłączyłem Syntastic i włączam / wyłączam sprawdzanie błędów z następującym w moim .vimrc:

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

Kiedy muszę skorzystać ze sprawdzania błędów, po prostu wciskam: ctrl-w E


To jest bardzo przydatne, dzięki .. Dodałem ten pomysł do mojej konfiguracji. +1
jdt

3
Dodałem to również do moich .vimrc. Jeśli jednak naciśnę Ctrl-w E Syntastic wyskakuje na sekundę i znika ponownie. Jakieś pomysły, co się dzieje nie tak i / lub jak to wyśledzić?
Anticom

Myślę, że mapowanie nie powinno mieć: SyntasticToggleMode <CR>, usunięcie tego powinno rozwiązać problem @Anticom.
Achal Dave

@AchalDave Nie naprawiłem tego dla mnie.
Anticom

Hm, nie mam pojęcia. Oto jak wyglądają moje ustawienia syntastyczne: github.com/achalddave/dotfiles/blob/ ...
Achal Dave

33

Alternatywnie do odpowiedzi Jamiego i gospes, można całkowicie wyłączyć sprawdzanie , określając go w następujący sposób:

let g:syntastic_html_checkers=['']

Upewnij się również, że syntastic_check_on_opennie jest ustawiona na 1, co spowoduje przeciwdziałanie powyższej linii:

let g:syntastic_check_on_open = 0

10

Możesz wyłączyć Syntastic dla całej sesji (jak odpowiedział Jamie Schembri ), ale jeśli jest to tylko problem z jednym „bardzo dużym plikiem”, możesz chcieć wyłączyć tylko jeden bufor.

Kilka plików, nad którymi pracuję w mojej pracy, jest beznadziejnie niezgodnych z PSR. Większość działa dobrze. Szukałem funkcji wyłączenia Syntastic tylko dla tych plików powodujących problemy. Prostsza forma rozwiązania „ SyntasticDisableToggle ” przedstawiona przez głównego współtwórcę działa dla mnie:

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

Ponieważ nie ma to wpływu na inne bufory, mogę nadal używać tej niesamowitej wtyczki do wszystkich innych (częściowo) zgodnych plików, które otworzyłem.


6

To nie dotyczy bezpośrednio pytania, ale może pomóc poza bieżącą sesją. Jeśli masz plik, który musisz często edytować, ale wiesz, że zawsze będziesz chciał wyłączyć Syntastic (np. Ma tysiące błędów i nie zamierzasz ich naprawiać, a pozostawienie go spowoduje spowolnienie interfejsu użytkownika), to na stałe umieszczenie na czarnej liście jest bardzo wygodne.

Aby to zrobić, użyj syntastic_ignore_filesopcji. Jest ukryty w pomocy, ale możesz używać wyrażeń regularnych z tą funkcją do czarnych list plików.

                                                    '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
Działa świetnie! Jednak nie to, o co chodziło w pytaniu. Oto +1 za bycie użytecznym.
bschlueter

5

Poniższe ustawienia zadziałały dla mnie.

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

Inną opcją wyłączenia sprawdzania pojedynczego bufora (niezależnie od typu pliku) jest użycie :let b:syntastic_mode="passive". Ponieważ nie jest to przełącznik, będzie działać, nawet jeśli bufor jest obecnie w trybie pasywnym.

Jeśli chcesz tymczasowo wyłączyć sprawdzanie wszystkich typów plików we wszystkich buforach, możesz użyć :bufdo let b:syntastic_mode="passive". Mam konfiguracje mapowania, aby wyłączyć / włączyć sprawdzanie wszystkich buforów:

nnoremap <leader>sN :bufdo let b:syntastic_mode="passive"<cr>
nnoremap <leader>sY :bufdo unlet b:syntastic_mode<cr>

Jest to szczególnie przydatne w przypadku :wqawielu otwartych buforów.


4

Podobnie jak te wspomniane przez kilku innych, tutaj jest segment vimrc, który domyślnie wyłączy Syntastic, ale mapuje przycisk (tutaj, F10) do sprawdzania bieżącego pliku i używa tego samego przycisku co przełącznik do wyłączania sprawdzania. Jest trochę powolny, ale działa.

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

Dzięki za Steven Lu , mogę teraz zignorować pliki Ansible Roles .

" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']

0

Używam Ale i Syntastic głównie dlatego, że obsługa Rust Ale nie jest jeszcze zbyt dobra. W moim przypadku używam menedżera pakietów vim-plug, konfiguruję tak, aby nie włączał żadnego z nich automatycznie. Zamiast tego używam strategii przełączania.

W moim przypadku domyślnie chcę Ale i Syntastic for Rust

W części wtyczki vimrc zrobiłem to

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

Następnie ustawiłem bind, aby włączyć linter (używam l jako mnemoika dla lintera)

nnoremap <leader>l :ALEToggle<CR>

W przypadku Rusta zastępuję to samo powiązanie

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

Musiałem również usunąć zawartość linii statusu z mojego vimrc, w przeciwnym razie otrzymuję błędy podczas ładowania go z wyłączonym 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

pozdrowienia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.