VIM + Syntastic: comment désactiver le vérificateur?

119

J'utilise Syntastic qui est activé pour mes fichiers HTML. Comme j'ai un très gros fichier avec les vérificateurs "validator w3" activés, GVIM ou VIM est devenu très lent lors de l'enregistrement du fichier (: w).

Est-il possible de désactiver la syntaxe temporellement uniquement pour la session en cours?

Yves Lange
la source
3
essayerlet g:syntastic_disabled_filetypes=['html']
yakiang

Réponses:

166

En utilisant, :SyntasticToggleModevous pouvez basculer Syntastic en mode passif, ce qui désactivera la vérification automatique. Vous pouvez ensuite vérifier un fichier en exécutant:SyntasticCheck place.

Pour en savoir plus, consultez :help syntastic-commands

Sur une autre note: si Syntastic est lent pour vous, pensez à essayer la bière comme alternative. Contrairement à Syntastic, il fonctionne de manière asynchrone, donc même s'il est lent, cela ne devrait pas vous gêner.

Jamie Schembri
la source
1
Existe-t-il un moyen de créer un seul alias ou de mapper une clé pour basculer cela? Ie, :errorou Ctrl + Maj / Alt + e bascule entre :SyntasticChecket :SyntasticToggleMode.
yoaquim
2
Vous pouvez créer un alias comme celui-ci dans le .vimrc: :command Sd SyntasticToggleMode Puis dans vi, appuyez sur: Sd et cela désactivera syntastic. Plus d'informations sur comment faire cela ici: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski
2
agréable. voici un mappage vers F6 si quelqu'un veut l'utilisersilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445
88

J'ai désactivé Syntastic par défaut et activer / désactiver la vérification des erreurs avec ce qui suit dans mon .vimrc:

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

Lorsque j'ai besoin d'utiliser la vérification des erreurs, je frappe simplement: ctrl-w E

évangiles
la source
C'est assez pratique, merci .. J'ai ajouté l'idée à ma config. +1
jdt
3
J'ai ajouté ceci à moi .vimrcaussi. Cependant, si j'appuie sur Ctrl-w E Syntastic apparaît pendant une seconde et disparaît à nouveau. Avez-vous des idées sur ce qui ne va pas et / ou comment le localiser?
Anticom
Je pense que le mappage ne devrait pas avoir: SyntasticToggleMode <CR>, la suppression de cela devrait résoudre votre problème @Anticom.
Achal Dave
@AchalDave Je ne l'ai pas résolu pour moi.
Anticom le
Hm, aucune idée. Voici à quoi ressemblent mes paramètres syntaxiques: github.com/achalddave/dotfiles/blob
Achal Dave
33

Alternative aux réponses Jamie et gospes, on peut désactiver complètement le vérificateur en spécifiant le vérificateur comme ceci:

let g:syntastic_html_checkers=['']

Assurez-vous également que le syntastic_check_on_openn'est pas défini sur 1, ce qui annulera la ligne ci-dessus:

let g:syntastic_check_on_open = 0
chutsu
la source
10

Vous pouvez désactiver Syntastic pour toute la session (comme l'a répondu Jamie Schembri ), mais si c'est juste un problème avec le seul "très gros fichier", vous voudrez peut-être désactiver un seul tampon.

Certains des fichiers sur lesquels je travaille dans le cadre de mon travail sont désespérément non conformes au PSR. La plupart fonctionnent très bien. Je cherchais une fonctionnalité pour désactiver Syntastic uniquement pour ces fichiers problématiques. Une forme plus simple de la solution ' SyntasticDisableToggle ' décrite par le contributeur principal fonctionne pour moi:

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

Parce que cela n'affecte pas les autres tampons, je peux continuer à utiliser ce plugin génial pour tous les autres fichiers (partiellement) compatibles que j'ai ouverts.

acier inoxydable
la source
6

Cela ne répond pas directement à la question, mais peut aider au-delà de la session en cours. Si vous avez un fichier que vous devez modifier souvent mais sur lequel vous savez que vous voudrez toujours désactiver Syntastic (par exemple, il contient des milliers d'erreurs et vous avez l'intention de ne pas les corriger, et le laisser activé entraîne un ralentissement de l'interface utilisateur), alors définitivement la mise sur liste noire est très pratique.

Pour ce faire, utilisez l' syntastic_ignore_filesoption. Il est caché dans l'aide, mais vous pouvez utiliser des expressions régulières avec cette fonctionnalité pour mettre les fichiers sur liste noire.

                                                    '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
la source
1
Fonctionne très bien! Pas ce que la question demandait cependant. Voici un +1 pour être utile.
bschlueter
5

Les paramètres suivants ont fonctionné pour moi.

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
la source
4

Une autre option pour désactiver la vérification d'un seul tampon (quel que soit le type de fichier) consiste à utiliser :let b:syntastic_mode="passive" . Comme ce n'est pas une bascule, cela fonctionnera même si le tampon est actuellement en mode passif.

Si vous souhaitez désactiver temporairement la vérification de tous les types de fichiers dans tous les tampons, vous pouvez utiliser :bufdo let b:syntastic_mode="passive". J'ai des mappages de configuration pour activer / désactiver la vérification de tous les tampons:

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

Ceci est particulièrement utile lorsque vous utilisez :wqabeaucoup de tampons ouverts.

Mark Grimes
la source
4

De même que ceux mentionnés par quelques autres, voici un segment vimrc qui désactivera Syntastic par défaut, mais mappe un bouton (ici, F10) pour vérifier le fichier actuel, et utilise le même bouton comme bascule pour désactiver les vérifications. C'est un peu lent, mais ça marche.

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
la source
0

Merci pour Steven Lu , je peux maintenant ignorer les fichiers d' Ansible Roles .

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

J'utilise Ale et Syntastic principalement parce que le support de Rust Ale n'est pas encore très bon. Dans mon cas, j'utilise le gestionnaire de paquets vim-plug, je l'ai configuré de manière à ce qu'il n'active aucun d'entre eux automatiquement. J'utilise plutôt une stratégie de bascule.

Dans mon cas, je veux Ale par défaut et Syntastic pour Rust

Dans la partie plugin de vimrc, j'ai fait ceci

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

Ensuite, j'ai défini une liaison pour activer linter, (j'utilise l comme mnémonique pour linter)

nnoremap <leader>l :ALEToggle<CR>

Pour Rust, je remplace la même liaison

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

De plus, j'ai dû supprimer les éléments de la ligne d'état de mon vimrc, sinon j'obtiens des erreurs lors du chargement avec Syntastic désactivé

" 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

Cordialement

geckos
la source