VIM + Syntastic: Wie deaktiviere ich den Checker?

118

Ich verwende Syntastic, das für meine HTML-Dateien aktiviert ist. Da ich eine sehr große Datei mit aktivierten "Validator w3" -Prüfern habe, wurde GVIM oder VIM beim Speichern der Datei (: w) sehr langsam.

Ist es möglich, die Syntastik nur für die aktuelle Sitzung zeitlich auszuschalten?

Yves Lange
quelle
3
versuchen Sielet g:syntastic_disabled_filetypes=['html']
Yakiang

Antworten:

166

Mit können :SyntasticToggleModeSie Syntastic in den passiven Modus schalten, wodurch die automatische Überprüfung deaktiviert wird. Sie können dann eine Datei überprüfen, indem Sie :SyntasticCheckstattdessen ausführen.

Weitere Informationen finden Sie unter :help syntastic-commands

Noch ein Hinweis: Wenn Syntastic für Sie langsam ist, sollten Sie Ale als Alternative ausprobieren . Im Gegensatz zu Syntastic wird es asynchron ausgeführt. Selbst wenn es langsam ist, sollte es Sie nicht behindern.

Jamie Schembri
quelle
1
Gibt es eine Möglichkeit, einen einzelnen Alias ​​zu erstellen oder einen Schlüssel zuzuordnen, um dies umzuschalten? Dh :erroroder Strg + Umschalt / Alt + e schaltet zwischen :SyntasticCheckund um :SyntasticToggleMode.
Yoaquim
2
Sie können einen solchen Alias ​​in der .vimrc erstellen: Drücken Sie :command Sd SyntasticToggleMode dann in vi: Sd und es wird die Syntastik deaktiviert. Weitere Informationen dazu finden Sie hier: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski
2
nett. Hier ist eine Zuordnung zu F6, wenn jemand es verwenden möchtesilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445
87

Ich habe Syntastic standardmäßig deaktiviert und die Fehlerprüfung mit den folgenden Elementen in meiner .vimrc aktiviert / deaktiviert:

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

Wenn ich die Fehlerprüfung verwenden muss, drücke ich einfach: Strg-W E.

Gospes
quelle
Das ist sehr praktisch, danke. Ich habe die Idee zu meiner Konfiguration hinzugefügt. +1
jdt
3
Ich habe dies auch zu meiner .vimrchinzugefügt. Wenn ich jedoch Strg-w drücke, erscheint Syntastic für eine Sekunde und verschwindet wieder. Irgendwelche Ideen, was falsch läuft und / oder wie man das aufspürt?
Anticom
Ich denke, das Mapping sollte nicht haben: SyntasticToggleMode <CR>, das Entfernen sollte Ihr Problem @Anticom beheben.
Achal Dave
@ AchalDave Hat es nicht für mich behoben.
Anticom
Hm, keine Ahnung. So sehen meine syntastischen Einstellungen aus: github.com/achalddave/dotfiles/blob/…
Achal Dave
33

Alternativ zu den Antworten von Jamie und Gospes kann der Prüfer vollständig deaktiviert werden, indem der Prüfer wie folgt angegeben wird:

let g:syntastic_html_checkers=['']

Stellen Sie außerdem sicher, dass der syntastic_check_on_openWert nicht auf 1 gesetzt ist, was der obigen Zeile widerspricht:

let g:syntastic_check_on_open = 0
Chutsu
quelle
10

Sie können Syntastic für die gesamte Sitzung deaktivieren (wie von Jamie Schembri beantwortet ). Wenn es sich jedoch nur um ein Problem mit der einen "sehr großen Datei" handelt, möchten Sie möglicherweise nur den einen Puffer deaktivieren.

Einige der Dateien, an denen ich in meinem Job arbeite, sind hoffnungslos nicht PSR-konform. Die meisten funktionieren gut. Ich suchte nach Funktionen, um Syntastic nur für diese Problemdateien zu deaktivieren. Eine einfachere Form der vom Hauptverantwortlichen beschriebenen ' SyntasticDisableToggle' -Lösung funktioniert für mich:

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

Da dies keine Auswirkungen auf andere Puffer hat, kann ich dieses fantastische Plugin weiterhin für alle anderen (teilweise) kompatiblen Dateien verwenden, die ich geöffnet habe.

ssteele
quelle
6

Dies geht nicht direkt auf die Frage ein, kann aber über die aktuelle Sitzung hinaus hilfreich sein. Wenn Sie eine Datei haben, die Sie häufig bearbeiten müssen, von der Sie jedoch wissen, dass Sie Syntastic immer deaktivieren möchten (z. B. hat sie Tausende von Fehlern und Sie beabsichtigen, sie nicht zu beheben, und wenn Sie sie belassen, führt dies zu einer Verlangsamung der Benutzeroberfläche), dann dauerhaft Blacklisting ist sehr praktisch.

Verwenden Sie dazu die syntastic_ignore_filesOption. Es ist in der Hilfe versteckt, aber Sie können Regexes mit dieser Funktion verwenden, um Dateien auf die schwarze Liste zu setzen.

                                                    '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$']
Steven Lu
quelle
1
Funktioniert super! Nicht das, wonach die Frage gefragt hatte. Hier ist eine +1, um nützlich zu sein.
Bschlueter
5

Die folgenden Einstellungen haben bei mir funktioniert.

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
quelle
4

Eine weitere Option zum Deaktivieren der Suche nach einem einzelnen Puffer (unabhängig vom Dateityp) ist die Verwendung :let b:syntastic_mode="passive". Da es sich nicht um einen Umschalter handelt, funktioniert er auch dann, wenn sich der Puffer derzeit im passiven Modus befindet.

Wenn Sie die Überprüfung aller Dateitypen in allen Puffern vorübergehend deaktivieren möchten, können Sie verwenden :bufdo let b:syntastic_mode="passive". Ich habe Setup-Zuordnungen zum Deaktivieren / Aktivieren der Überprüfung aller Puffer:

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

Dies ist besonders hilfreich, wenn :wqaviele offene Puffer verwendet werden.

Mark Grimes
quelle
4

Ähnlich wie bei einigen anderen ist hier ein vimrc-Segment, das Syntastic standardmäßig deaktiviert, jedoch eine Schaltfläche (hier F10) zum Überprüfen der aktuellen Datei zuordnet und dieselbe Schaltfläche als Umschalter zum Deaktivieren der Überprüfungen verwendet. Es ist etwas langsam, funktioniert aber.

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
quelle
0

Vielen Dank für Steven Lu , ich kann jetzt die Dateien von Ansible Roles ignorieren .

" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']
Chu-Siang Lai
quelle
0

Ich benutze Ale und Syntastic hauptsächlich, weil die Unterstützung von Rust Ale noch nicht sehr gut ist. In meinem Fall verwende ich den vim-plug-Paketmanager, den ich so einrichte, dass er diese nicht automatisch aktiviert. Ich verwende stattdessen eine Umschaltstrategie.

In meinem Fall möchte ich standardmäßig Ale und Syntastic for Rust

Im Plugin-Teil von vimrc habe ich das gemacht

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

Danach setze ich eine Bindung, um Linter zu aktivieren (ich benutze l als Mnemoic für Linter).

nnoremap <leader>l :ALEToggle<CR>

Für Rust überschreibe ich die gleiche Bindung

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

Außerdem musste ich das Statuszeilenmaterial aus meinem vimrc entfernen, da sonst beim Laden mit deaktiviertem Syntastic Fehler auftreten

" 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

Grüße

Geckos
quelle