VIM + Syntastic: ¿cómo deshabilitar el corrector?

119

Estoy usando Syntastic, que está habilitado para mis archivos HTML. Dado que tengo un archivo muy grande con los comprobadores "validator w3" habilitados, GVIM o VIM se volvieron muy lentos al guardar el archivo (: w).

¿Es posible alternar temporalmente la sincronización solo para la sesión actual?

Yves Lange
fuente
3
trylet g:syntastic_disabled_filetypes=['html']
yakiang

Respuestas:

166

Usando :SyntasticToggleModepuede cambiar Syntastic al modo pasivo, lo que desactivará la verificación automática. A continuación, puede comprobar un archivo ejecutando en su :SyntasticChecklugar.

Para más, vea :help syntastic-commands

En otra nota: si Syntastic es lento, considere probar la cerveza como alternativa. A diferencia de Syntastic, se ejecuta de forma asincrónica, por lo que incluso si es lento, no debería obstaculizarlo.

Jamie Schembri
fuente
1
¿Hay alguna forma de crear un solo alias o asignar una clave para alternar esto? Es decir, :erroro Ctrl + Shift / Alt + e alterna entre :SyntasticChecky :SyntasticToggleMode.
yoaquim
2
Puede crear un alias como este en el .vimrc: :command Sd SyntasticToggleMode Luego en vi presione: Sd y deshabilitará Syntastic. Más información sobre cómo hacer eso aquí: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski
2
bonito. aquí hay un mapeo a F6 si alguien quiere usarlosilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445
88

He desactivado Syntastic de forma predeterminada y activo / desactivo la comprobación de errores con lo siguiente en mi .vimrc:

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

Cuando necesito usar la verificación de errores, simplemente presiono : ctrl-w E

gospes
fuente
Esto es muy útil, gracias .. He agregado la idea a mi configuración. +1
jdt
3
También he agregado esto a mi .vimrc. Sin embargo, si presiono Ctrl-w E, Syntastic aparece por un segundo y desaparece nuevamente. ¿Alguna idea de qué va mal y / o cómo localizarlo?
Anticom
Creo que el mapeo no debería tener: SyntasticToggleMode <CR>, eliminar eso debería solucionar su problema @Anticom.
Achal Dave
@AchalDave No me lo arregló.
Anticom
Hm, ni idea. Así es como se ven mis configuraciones fantásticas: github.com/achalddave/dotfiles/blob/…
Achal Dave
33

Como alternativa a las respuestas de Jamie y gospes, uno puede deshabilitar el verificador por completo especificando el verificador de esta manera:

let g:syntastic_html_checkers=['']

También asegúrese de syntastic_check_on_openque no esté establecido en 1, lo que anulará la línea anterior:

let g:syntastic_check_on_open = 0
chutsu
fuente
10

Puede desactivar Syntastic durante toda la sesión (como respondió Jamie Schembri ), pero si es solo un problema con el "archivo muy grande", es posible que desee desactivar solo un búfer.

Algunos de los archivos en los que trabajo en mi trabajo no son compatibles con PSR. La mayoría funciona bien. Estaba buscando una funcionalidad para deshabilitar Syntastic solo para esos archivos problemáticos. Una forma más simple de la solución ' SyntasticDisableToggle ' descrita por el colaborador principal funciona para mí:

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

Debido a que esto no afecta a otros búferes, puedo seguir usando este increíble complemento para cualquier otro archivo (parcialmente) compatible que tenga abierto.

ssteele
fuente
6

Esto no aborda directamente la pregunta, pero puede ayudar más allá de la sesión actual. Si tiene un archivo que debe editar con frecuencia pero que sabe que siempre querrá deshabilitar Syntastic (por ejemplo, tiene miles de errores y tiene la intención de no corregirlos, y dejarlo en la interfaz de usuario da como resultado una ralentización), entonces permanentemente ponerlo en una lista negra es muy conveniente.

Para hacer esto, use la syntastic_ignore_filesopción. Está escondido en la ayuda, pero puede usar expresiones regulares con esta función para incluir archivos en la lista negra.

                                                    '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
fuente
1
¡Funciona genial! Sin embargo, no era lo que pedía la pregunta. Aquí hay un +1 por ser útil.
bschlueter
5

La siguiente configuración funcionó para mí.

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

Otra opción para desactivar la comprobación de un solo búfer (independientemente del tipo de archivo) es usar :let b:syntastic_mode="passive" . Dado que no es un conmutador, funcionará incluso si el búfer está actualmente en modo pasivo.

Si desea desactivar temporalmente la verificación de todos los tipos de archivo en todos los búferes, puede usar :bufdo let b:syntastic_mode="passive". He configurado asignaciones para activar / desactivar la verificación de todos los búferes:

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

Esto es particularmente útil cuando se trabaja :wqacon muchos búferes abiertos.

Mark Grimes
fuente
4

De manera similar a los mencionados por algunos otros, aquí hay un segmento de vimrc que desactivará Syntastic de forma predeterminada, pero asigna un botón (aquí, F10) para verificar el archivo actual, y usa el mismo botón como alternador para desactivar las verificaciones. Es un poco lento, pero funciona.

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

Gracias por Steven Lu , ahora puedo ignorar los archivos de Ansible Roles .

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

Estoy usando Ale y Syntastic principalmente porque el soporte de Rust Ale aún no es muy bueno. En mi caso, estoy usando el administrador de paquetes vim-plug, lo configuro para que no habilite ninguno de estos automáticamente. En su lugar, uso una estrategia de alternancia.

En mi caso quiero Ale por defecto y Syntastic para Rust

En la parte del complemento de vimrc hice esto

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

Luego configuro un enlace para habilitar linter (uso l como mnemoic para linter)

nnoremap <leader>l :ALEToggle<CR>

Para Rust anulo el mismo vínculo

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

También tuve que eliminar las cosas de la línea de estado de mi vimrc; de lo contrario, obtengo errores al cargarlo con Syntastic deshabilitado

" 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

Saludos

geckos
fuente